Page 1 of 1

윈도우용 Firefox3는 어떻게 ...

Posted: 2007 10 16 16:31 01
by createmain
현재 Firefox 3.X를 윈도우에서 컴파일하였고,
Window를 생성하는 부분을 살펴보고 있습니다.
기본 Dialog는 어떻게 만드는지 찾았는데, (widget 폴더에 있더군요..)
Button이나 label같은 것은 어떻게 만들어 내는지 도통 찾을수가 없습니다.

Window API를 사용할테니 CreateWindow("button", ... 과 같은 API를 호출하는 곳을 찾아보는데 없더군요.... 적어도 "button"은 있어야 한다고 생각했는데 전체 소스를 다 뒤져 보아도 안보여서요,
혹시 이부분에 대하여 아시는 분 있으시면 알려주세요.. ^^

Posted: 2007 10 16 18:24 01
by jeongkyu
버튼을 Win32 API를 사용해서 만들었다고 판단하기 전에 Spy++ 같은 프로그램을 사용해서 확인해 보면 어떨까요? 아마 Win32 버튼으로 안잡힐 것입니다.

파이어폭스는 독자적인 방식의 UI 레이어를 가지고 있습니다. 시간을 거슬러 올라가 넷스케이프를 개발할 당시, 개발자들은 XML로 디자인을 정의하고 자바스크립트로 이를 프로그래밍할 수 있는 UI 방식을 구현했습니다. 이 방식을 적용하면 플랫폼이 달라도 일관성있고 융통성있는 UI를 개발할 수 있다는 장점이 있습니다. 넷스케이프와 모질라에서 이를 구현한 모듈이 소스 트리의 xpfe(Cross Platform Front End)입니다. 파이어폭스를 개발할 때는 이미 복잡한 xpfe 코드를 개선하기보다 새로운 모듈을 개발하기로 결정합니다. 이것이 소스 트리의 toolkit(XUL 툴킷) 모듈입니다. 기존의 모질라와 파이어폭스의 UI가 달라 보이는 것은 이 XPFE와 XUL Toolkit의 차이입니다.

렌더링의 관점에서 파이어폭스는 UI 자체를 렌더링하는 것과 HTML 문서를 렌더링하는 것이 다르지 않습니다. HTML 문서 뿐만 아니라 UI (XML + 자바스크립트)도 브라우저의 렌더링 엔진이 그리는 것이지요. 즉, 윈도우 API를 사용하여 브라우저의 버튼을 그리는 것이 아니라 브라우저 엔진에서 버튼을 그려주는 것입니다. 이러한 방식을 사용하기 때문에 파이어폭스는 확장이나 테마의 개발이 쉽고 코드를 수정하지 않아도 다양한 플랫폼에 적용할 수 있게 됩니다.

...

아는대로 설명해 보려고 했는데 적고 나니 동문서답이 된 것 같습니다. -_- 다른 분들의 더 좋은 답변 기대해 봅니다~

그러면 하단에 GFX가 존재하는 것인가요?

Posted: 2007 10 16 19:10 56
by createmain
먼저 답변 주셔서 감사합니다.
그렇게 되어있다면, 지금까지 삽질 하고 있었군요.. ^^

제가 알기로 Firefox는 별도의 Rendering Engine을 사용하는 것으로 알고 있습니다.
GFX가 거기 해당되는 것으로 알고 있는데,
그러면
GFX내 Cairo를 기반으로 해서 UI를 그리는 것인가요?