我正在編寫Frank Luna的書「使用DirectX 10進行3D遊戲編程的介紹」中的示例代碼。該代碼是附錄A:Windows編程部分中的第一個Win32示例。Win32:沒有窗口出現
現在,程序在VC++ 2008/2010下編譯,但沒有出現窗口,雖然調試會話已經開始,我必須強制關閉它。我不知道它在哪裏,我沒有使用Win32控制檯模式,我已經關閉了所有其他窗口,並且沒有其他IDE或VC++會話正在運行。
任何想法,爲什麼這可能會發生? PS:我也檢查過我的過程。它確實在運行。
#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);
}
不是每個人都有這本書。你可以發佈一些代碼嗎?或者會違反版權法? – 2010-06-13 15:39:33
我不這麼認爲。增加了代碼。 – IAE 2010-06-13 15:44:24