윈도우 라이브러리의 윈도우 함수를 호출하여 윈도우 창을 생성할 수 있습니다.
VC, MS 등 Windows 컴파일러를 사용해야 합니다.
RegisterClassEx 함수:
이 함수는 CreateWindow 함수 및 CreateWindowEx 함수에 대한 후속 호출에 사용되는 창 클래스를 등록합니다. RegisterClass 함수는 RegisterClassEx 함수로 대체되었지만 클래스에 대한 작은 대상을 설정할 필요가 없는 경우 RegisterClass 함수를 계속 사용할 수 있습니다.
CreateWindowEx 함수:
이 함수는 확장된 스타일로 계단식 창, 팝업 창 또는 하위 창을 생성합니다. 기타 사항은 CreateWindow 함수와 동일합니다. 창 및 기타 매개변수 생성에 대한 자세한 내용은 CreateWindow를 참조하세요. 구체적인 정보는 여전히 Microsoft의 msdn에서 찾을 수 있습니다.
메시지 처리 함수 WindowProc:
이 함수는 애플리케이션 정의 함수입니다. 창으로 전송된 메시지를 처리합니다. WINDPROC 유형은 콜백 함수에 대한 포인터를 정의합니다. WindowProc는 응용 프로그램 정의 함수에 대한 자리 표시자입니다.
함수 프로토타입:
LRESULT CALLBACK WindowProc (HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam);
매개변수:
hwnd: 창을 가리키는 핸들입니다.
uMsg: 메시지 유형을 지정합니다.
wParam: 나머지 메시지별 정보를 지정합니다. 이 매개변수의 내용은 UMsg 매개변수 값과 관련됩니다.
IParam: 나머지 메시지별 정보를 지정합니다. 이 매개변수의 내용은 uMsg 매개변수 값과 관련됩니다.
반환값: 반환값은 보낸 메시지와 관련된 메시지 처리 결과입니다.
간단한 Window의 코드는 다음과 같습니다: #include?
#include?
LRESULT?WINAPI ?WinProc (HWND?hWnd,UINT?Msg,WPARAM?wParam,LPARAM?lParam);
int?WinMain(?
__in?HINSTANCE?hInstance,?
__in_opt?HINSTANCE?hPrevInstance,?
__in?LPSTR?lpCmdLine,?
__in?int?nShowCmd?
)
{
TCHAR?*szName?=?_T("myWindow");
WNDCLASSEX?wc?=?{0};
HWND? hWnd? =?NULL;
MSG?Msg?=?{0};
wc.cbClsExtra=?0;
wc.cbWndExtra=?0 ;
wc.cbSize=?sizeof(WNDCLASSEX);
wc.hbrBackground?=?(HBRUSH)GetStockObject(WHITE_BRUSH);//여기서 함수를 통해 흰색 배경을 설정합니다. NULL로 설정하면 흥미로울 것입니다.
wc.hCursor?=?NULL;//설정하지 마세요
wc.hIcon?=?NULL;// 설정하지 마세요
p>
wc.hIconSm?=?NULL;//설정하지 마세요
wc.hInstance?=?hInstance;// 현재 프로그램에서 hInstance는 시스템에 의해 전달됩니다.
wc.lpfnWndProc?=?WinProc;//창 처리 프로세스의 콜백 함수.
wc.lpszClassName?=?szName;//창 클래스의 이름입니다.
wc.lpszMenuName=?NULL;?
wc.style?=?CS_HREDRAW?|?CS_VREDRAW;?
RegisterClassEx(&wc);//in 시스템에 등록
hWnd?=?CreateWindowEx(WS_EX_CLIENTEDGE,szName,_T("내가 좋아하는 내 창"),WS_OVERLAPPEDWINDOW,
200,100,600,400,NULL,NULL,hInstance,NULL) ;//"내가 좋아하는 내 창"이라는 제목의 창을 만듭니다.
if(hWnd?==?NULL)
{
MessageBox(NULL , _T("저기?오류가 있습니까?"),_T("오류?제목"),MB_ICONEXCLAMATION|MB_OK);
return?0;
}
ShowWindow(hWnd,nShowCmd);//창 표시
UpdateWindow(hWnd);
//다음은 메시지의 루프 처리이므로 걱정할 필요가 없습니다. 이제 다음 섹션에서는 클래스
while(GetMessage(&Msg,NULL,0,0))
{
TranslateMessage(에서 자세히 설명하겠습니다. &Msg);//메시지 번역
DispatchMessage(&Msg);//메시지 발송
}
return?Msg.message;
}
//메시지 처리 함수
LRESULT?WINAPI?WinProc(HWND?hWnd,UINT?Msg,WPARAM?wParam,LPARAM?lParam)
{
switch(Msg)//메시지 처리 과정
{
case?WM_DESTROY://마우스 클릭 닫기 버튼 이벤트에 대한 응답
PostQuitMessage(0); //메시지 큐 종료
return?0;//함수 종료
}
return?DefWindowProc(hWnd,Msg ,wParam,lParam);
p>}