Win32 Application源程序可以通过编译,但运行后却没有窗口显示
编号:QA004135
建立日期: 2001年4月23日 最后修改日期:2001年4月23日
所属类别:
Washington:
本问题涉及的操作系统:Windows 2000 professional (/Windows 98)
本问题涉及的编程工具:Visual C++ 6.0 Enterprise
以下的Win32 Application源程序可以顺利通过编译,但运行后却没有结果(没有窗口显示),当我按了Go(F5)后,输出窗口会显示如下信息:
Loaded 'D:\WINNT\System32\ntdll.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\KERNEL32.DLL', no matching symbolic information found.
Loaded 'D:\WINNT\system32\USER32.DLL', no matching symbolic information found.
Loaded 'D:\WINNT\system32\GDI32.DLL', no matching symbolic information found.
Loaded 'D:\WINNT\system32\imm32.dll', no matching symbolic information found.
Loaded 'D:\WINNT\system32\ADVAPI32.DLL', no matching symbolic information found.
Loaded 'D:\WINNT\system32\rpcrt4.dll', no matching symbolic information found.
The thread 0x4D0 has exited with code 0 (0x0).
The program 'G:\vcfile\Myprojectnt\Study\Hellotem\Debug\Hellotem.exe' has exited with code 0 (0x0).
希望专家能告诉我这是怎么回事,我该如何改正。以下为源程序:
//Simpwin.c
#include<windows.h>
#include<string.h>
LRESULT CALLBACK MainWndProc(HWND,UINT,WPARAM,LPARAM);
BOOL InitApplication(HINSTANCE);
BOOL InitInstance(HINSTANCE,int);
char* hello="窗口外的世界很精彩,窗口内的天地也很奇妙";
HINSTANCE hInst;
HWND hWndMain;
int APIENTRY WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG msg;
if (!InitApplication(hInstance))
return (FALSE);
if(!InitInstance(hInstance,nCmdShow))
return (FALSE);
while(GetMessage(&msg,
NULL,
0,
0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return(msg.wParam);
}
BOOL InitApplication(HINSTANCE hInstance)
{
WNDCLASS wce;
wce.style=0;
wce.lpfnWndProc=(WNDPROC)MainWndProc;
wce.hCursor=LoadCursor(NULL,IDC_ARROW);
wce.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wce.cbClsExtra=0;
wce.cbWndExtra=0;
wce.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wce.hInstance=hInstance;
wce.lpszClassName="SimpWClass";
wce.lpszMenuName=NULL;
return(RegisterClass(&wce));
}
BOOL InitInstance(HINSTANCE hInstance,
int nCmdShow)
{
hInst=hInstance;
hWndMain= CreateWindow("SimpwinWClass",
"我的窗口",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
if(!hWndMain)
return(FALSE);
ShowWindow(hWndMain,nCmdShow);
UpdateWindow(hWndMain);
return(TRUE);
}
LRESULT CALLBACK MainWndProc(HWND hWnd,
UINT message,
WPARAM wParam,
LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
switch(message)
{
case WM_PAINT:
hdc=BeginPaint(hWnd,&ps);
TextOut(hdc,20,10,hello,lstrlen(hello));
EndPaint(hWnd,&ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return(DefWindowProc(hWnd,message,wParam,lParam));
}
return(0);
}
回答:
你看到的信息并没有什么错误,这只是正常的。其实你的错误非常明显,只是你太粗心了。有错误不可怕,关键是要学会调试,你可以按F11键(Step into)进行逐行调试,这样你就会知道,程序在执行CreateWindow时没有成功,所以窗口也没有显示。具体的错误是你定义的窗口类是SimpWClass,而CreateWindow时使用的类却是SimpwinWClass。
此问题由李海回答。
| |
|
|
| |
|
|