2011-12-14 6 views
7

Windows API 응용 프로그램에서 창을 만들 때 WNDCLASSEXRegisterClassEx()을 통해 창 클래스를 등록하는 목적은 무엇입니까?창 클래스 등록의 목적은 무엇입니까?

+3

C++ 용어로 생각하면 도움이됩니다. 창 클래스 == C++ 클래스, CreateWindow == 새 연산자. –

답변

5

창문. 대화 상자 컨트롤 (버튼, 목록 상자 등)이 대표적인 예입니다. 모두 클래스를 공유합니다. 즉, 그들은 창 프로 시저를 공유합니다. 즉, 그림 논리, 입력 반응, 맞춤 메시지, 알림 등을 공유합니다.

같은 수준의 창을 많이 사용하는 가장 일반적인 경우는 다음과 같습니다. 다중 문서 인터페이스 내의 문서. 때때로 사람들은 앱 특정 컨트롤을 도입하기도합니다. 그래서 그 구별은 그 목적을 수행합니다.

5

메시지 대기열에 처리 할 항목이있을 때 시스템에 오른쪽 WndProc을 호출하는 것이 주된 목적입니다.

일부 플래그가 있지만 주요 포인트는 위와 같습니다.

  • 체크 박스
  • 스크롤
  • 콤보
  • 리스트 박스
  • WndProc가 단독 인

    • 버튼 :

      창 클래스는 UI에서 '위젯'의 종류에 대응 위젯 행동의 운전자 티. 따라서

      매핑 : 위젯 (제어 타입) ->wndclass ->WndProc 윈도우의 분리 CreateWindow 함수() 물건과있는 registerClass() 물건을 균일하게-행동하는의 생성을 가능하도록 초기에 이루어졌다에 속성

    +0

    다른 것들 중에서도 [GetWindowLongPtr()'] (http://msdn.microsoft.com/en-us/library/windows/desktop/)에서 사용할 수있는 추가 창 메모리의 수와 같은 일부 창 특성을 지정하는 데 사용됩니다. ms633585.aspx). 윈도우가 사용하는 추가 윈도우 바이트 수는 일단 생성하면 고정됩니다. –

    +0

    창 클래스를 별도로 등록해야하는 이유는 무엇입니까? 이론적으로 WndProc()는 CreateWindow()의 일부로 전달 될 수 있습니다. Windows 시스템 등록 목적은 무엇입니까? –

    +0

    Windows 클래스를 전역으로 등록하고 해당 시점의 모든 응용 프로그램에서 사용할 수있는 메커니즘이 있습니다. 사실, 모든 내장 윈도우 컨트롤은 그런 방식으로 등록됩니다. 세부 사항은 기억이 나지 않지만 '글로벌 wndclass' –

    관련 문제