프랭크 루나 (Frank Luna)의 "Introduction to 3D Game Programming with DirectX 10"에서 예제 코드를 프로그래밍하고 있었다. 이 코드는 부록 A : Windows 프로그래밍 섹션의 첫 번째 Win32 예제입니다.Win32 : 윈도우가 나타나지 않는다.
현재 프로그램은 VC++ 2008/2010에서 컴파일되지만 디버그 세션이 시작되었지만 강제로 닫아야 만하는 창이 나타나지 않습니다. 나는 그것이 어디 있는지 모르지만, Win32 콘솔 모드를 사용하지 않고, 다른 모든 창을 닫았으며 다른 IDE 나 VC++의 세션이 실행되고 있지 않습니다.
왜 이런 일이 벌어지고 있는지 알 수 있습니까?
추신 : 내 프로세스도 확인했습니다. 실제로 실행 중입니다.
#include <Windows.h>
HWND ghMainWnd = 0;
bool InitWindowsApp(HINSTANCE instanceHandle, int show);
int Run();
LRESULT CALLBACK
WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
int WINAPI
WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pCmdLine, int nShowCmd)
{
if(!InitWindowsApp(hInstance, nShowCmd))
return 0;
return Run();
}
bool InitWindowsApp(HINSTANCE instanceHandle, int show)
{
WNDCLASS wc;
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = instanceHandle;
wc.hIcon = LoadIcon(0, IDI_APPLICATION);
wc.hCursor = LoadCursor(0, IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = 0;
wc.lpszClassName = L"BasicWndClass";
if(!RegisterClass(&wc))
{
MessageBox(0, L"RegisterClass FAILED", 0, 0);
return false;
}
ghMainWnd = CreateWindow(
L"BasicWndClass",
L"Win32Basic",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
0,
0,
instanceHandle,
0);
if(ghMainWnd = 0)
{
MessageBox(0, L"Window Creation FAILED", 0, 0);
return false;
}
ShowWindow(ghMainWnd, show);
UpdateWindow(ghMainWnd);
return true;
}
int Run()
{
MSG msg = {0};
BOOL bRet = 1;
while(bRet = GetMessage(&msg, 0, 0, 0) != 0)
{
if(bRet == -1)
{
MessageBox(0, L"GetMessage FAILED", 0, 0);
break;
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return (int)msg.wParam;
}
LRESULT CALLBACK
WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_LBUTTONDOWN:
MessageBox(0, L"Hello, World", 0, 0);
return 0;
case WM_KEYDOWN:
if(wParam == VK_ESCAPE)
DestroyWindow(ghMainWnd);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
누구나 책을 갖고있는 것은 아닙니다. 몇 가지 코드를 게시 할 수 있습니까? 아니면 저작권법을 위반 했습니까? –
나는 그렇게 생각하지 않는다. 코드 추가. – IAE