热情软件屋

 

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。

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio