win32 API 코드질문
글쓴이: awdxawdx101 / 작성시간: 월, 2019/03/11 - 3:57오후
#include "Windows.h" #include "Resource.h" LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); HINSTANCE g_hInst; LPCTSTR lpszClass = TEXT("test"); int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int CmdShow) { HWND hWnd; MSG Message; WNDCLASS WndClass; g_hInst = hInstance; WndClass.cbClsExtra = 0; // 특수 목적에 사용되는 여분의 공간. WndClass.cbWndExtra = 0; // " WndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); // 윈도우의 배경 색상을 채색할 브러시 지정. WndClass.hIcon = LoadIcon(NULL, IDC_ARROW); // 최소화 되었을 겨우 출력될 아이콘 지정 WndClass.hInstance = hInstance; // 윈도우 클래스를 사용하는 프로그램의 번호 WndClass.lpfnWndProc = WndProc; // 메시지 발생시 처리할 함수. WndClass.lpszClassName = lpszClass; // 윈도우의 클래스 이름 정의 WndClass.lpszMenuName = NULL; // 이 프로그램이 사용할 메뉴. 미사용시 NULL WndClass.style = 0; // 윈도우가 어떤 형태를 가질것인가.. RegisterClass(&WndClass); // 나는 이 특성을 가진 윈도우를 사용할 것이다. hWnd = CreateWindow(lpszClass, lpszClass, WS_OVERLAPPEDWINDOW, 0, 0, 300, 300, NULL, (HMENU)NULL, hInstance, NULL); ShowWindow(hWnd, CmdShow); while (GetMessage(&Message, 0, 0, 0)) { TranslateMessage(&Message); DispatchMessage(&Message); } return Message.wParam; } LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam) { switch (iMessage) { case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hWnd, iMessage, wParam, lParam); }
컴파일은 되는데 윈도우 창이안뜹니다.. 분명히 ShowWindow를 해줬는데 왜그런걸까요 ㅠㅠ
CALLBACK 함수안에 MessageBoxA()를 사용하면 반응이 없고, WinMain안에 MessageBoxA()를 사용하면 작동을 합니다.
CALLBACK 함수 호출을 안하는것같은데 어떻게 해결해야할지...
Forums:
코드만 봤을 때는 커서가 없네요.
코드만 봤을 때는 커서가 없네요.
RegisterClass 리턴값 0이면 아마 그 문제일테니 커서도 지정해주세요.
등록안된 클래스로 CreateWindow호출하면 NULL이 반환됩니다.
wow....
와... hCursor 추가하니까 창이 뜹니다.
갑사합니다 ㅠㅠ
댓글 달기