2013-04-04 39 views
1

当我键入此,我没有得到我的计算机上的一个空白窗口显示:空白窗口应用程序不显示?

#define WIN32_LEAN_AND_MEAN 

#include<Windows.h> 

bool InitMainWindow(HINSTANCE, int); 
LRESULT CALLBACK MsgProc(HWND, UINT, WPARAM, LPARAM); 
const int WIDTH=800; 
const int HEIGHT=600; 

HWND hwnd=NULL; 

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdline,  int mCmdShow) 
{ 
    if(!InitMainWindow(hInstance,mCmdShow)) 
     return 1; 
    MSG msg={0}; 

    while(WM_QUIT!=msg.message) 
    { 
     if(PeekMessage(&msg,0,0,0,PM_REMOVE)) 

     { 
      TranslateMessage(&msg); 
      DispatchMessage(&msg); 
     } 
    } 
    return static_cast<int>(msg.wParam); 

} 

bool InitMainWindow(HINSTANCE hInstance, int mCmdShow) 
{ 
    WNDCLASSEX wcex; 

    wcex.cbSize=sizeof(wcex); 
    wcex.style=CS_HREDRAW|CS_VREDRAW; 
    wcex.cbClsExtra=0; 
    wcex.cbWndExtra=0; 
    wcex.lpfnWndProc=MsgProc; 
    wcex.hInstance=hInstance; 
    wcex.hIcon=LoadIcon(NULL,IDI_APPLICATION); 
    wcex.hCursor=LoadCursor(NULL,IDC_ARROW); 
    wcex.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH); 
    wcex.lpszClassName = (LPCWSTR)"tutorialClass"; 

    wcex.lpszMenuName=NULL; 
    wcex.hIconSm=LoadIcon(NULL,IDI_WINLOGO); 

    if(!RegisterClassEx(&wcex)) 
     return false; 

    hwnd=CreateWindow((LPCWSTR)"tutorial class", 
      (LPCWSTR)"tutorial window", 
      WS_OVERLAPPED | WS_SYSMENU |WS_CAPTION, 
      GetSystemMetrics(SM_CXSCREEN)/2-WIDTH/2, 
      GetSystemMetrics(SM_CYSCREEN)/2-HEIGHT/2, 
      WIDTH, 
      HEIGHT, 
      (HWND)NULL, 
      NULL, 
      hInstance, 
      (LPVOID*)NULL); 

    if(!hwnd) 
     return false; 

    ShowWindow(hwnd, mCmdShow); 

    return true; 

} 

LRESULT CALLBACK MsgProc(HWND hwnd, UINT msg,WPARAM wParam,LPARAM lParam) 
{ 
    switch(msg) 
    { 
     case WM_DESTROY: 
      PostQuitMessage(0); 
      return 0; 
     case WM_CHAR: 
      switch(wParam) 
      { 
       case VK_ESCAPE: 
        PostQuitMessage(0); 
        return 0; 
      } 
      return 0; 
    } 
    return DefWindowProc(hwnd, msg ,wParam,lParam); 
} 

的Visual Studio 2010 Express Edition的,我收到以下错误和警告:

'WindowBlank.exe': Loaded 'C:\Users\ramapriya\Documents\Visual Studio 2010\Projects\WindowBlank\Debug\WindowBlank.exe', Symbols loaded. 
'WindowBlank.exe': Loaded 'C:\Windows\SysWOW64\ntdll.dll', Cannot find or open the PDB file 
'WindowBlank.exe': Loaded 'C:\Windows\SysWOW64\kernel32.dll', Cannot find or open the PDB file 
'WindowBlank.exe': Loaded 'C:\Windows\SysWOW64\KernelBase.dll', Cannot find or open the PDB file 
'WindowBlank.exe': Loaded 'C:\Windows\SysWOW64\user32.dll', Cannot find or open the PDB file 
'WindowBlank.exe': Loaded 'C:\Windows\SysWOW64\gdi32.dll', Cannot find or open the PDB file 
'WindowBlank.exe': Loaded 'C:\Windows\SysWOW64\lpk.dll', Cannot find or open the PDB file 
'WindowBlank.exe': Loaded 'C:\Windows\SysWOW64\usp10.dll', Cannot find or open the PDB file 
'WindowBlank.exe': Loaded 'C:\Windows\SysWOW64\msvcrt.dll', Cannot find or open the PDB file 
'WindowBlank.exe': Loaded 'C:\Windows\SysWOW64\advapi32.dll', Cannot find or open the PDB file 
'WindowBlank.exe': Loaded 'C:\Windows\SysWOW64\sechost.dll', Cannot find or open the PDB file 
'WindowBlank.exe': Loaded 'C:\Windows\SysWOW64\rpcrt4.dll', Cannot find or open the PDB file 
'WindowBlank.exe': Loaded 'C:\Windows\SysWOW64\sspicli.dll', Cannot find or open the PDB file 
'WindowBlank.exe': Loaded 'C:\Windows\SysWOW64\cryptbase.dll', Cannot find or open the PDB file 
'WindowBlank.exe': Loaded 'C:\Windows\SysWOW64\msvcr100d.dll', Symbols loaded. 
'WindowBlank.exe': Loaded 'C:\Windows\SysWOW64\imm32.dll', Cannot find or open the PDB file 
'WindowBlank.exe': Loaded 'C:\Windows\SysWOW64\msctf.dll', Cannot find or open the PDB file 
'WindowBlank.exe': Loaded 'C:\ProgramData\Browser Manager\2.6.1125.80\{16cdff19-861d-48e3-a751-d99a27784753}\browsemngr.dll', Cannot find or open the PDB file 
'WindowBlank.exe': Loaded 'C:\Windows\SysWOW64\shell32.dll', Cannot find or open the PDB file 
'WindowBlank.exe': Loaded 'C:\Windows\SysWOW64\shlwapi.dll', Cannot find or open the PDB file 
'WindowBlank.exe': Loaded 'C:\Windows\SysWOW64\ole32.dll', Cannot find or open the PDB file 
'WindowBlank.exe': Loaded 'C:\Windows\SysWOW64\oleaut32.dll', Cannot find or open the PDB file 
'WindowBlank.exe': Loaded 'C:\Windows\SysWOW64\version.dll', Cannot find or open the PDB file 
'WindowBlank.exe': Loaded 'C:\Windows\SysWOW64\imagehlp.dll', Cannot find or open the PDB file 
'WindowBlank.exe': Loaded 'C:\Windows\SysWOW64\psapi.dll', Cannot find or open the PDB file 
'WindowBlank.exe': Loaded 'C:\Windows\SysWOW64\uxtheme.dll', Cannot find or open the PDB file 
The program '[7792] WindowBlank.exe: Native' has exited with code 1 (0x1). 

有时在我的电脑上编译需要很长时间,因为它很慢。我不明白代码中有什么错误。我刚开始学习,我试着改变参数,顺序,重新输入所有内容,创建一个新项目,但空白窗口似乎没有出现。这是为什么?

我不知道这段代码有什么问题。或者有些图书馆可能缺失?我有Windows 7 64位家庭版,我也安装了DirectX 11 SDK。

+1

尝试单步执行调试程序中的代码,查看是否有任何函数调用失败。如果他们这样做,请检查错误代码。 (另外,将一个char *转换为LPCWSTR的做法往往不太顺利。) – 2013-04-04 18:51:34

+0

如果我在字符之前不给(LPCWSTR),它会给出一个错误。这就是我添加它的原因。还有什么我可以做的吗?没有它就不会编译。 – LoveMeow 2013-04-04 18:57:06

+1

编译器告诉你,你正在传递错误类型的字符串。铸造不能解决这个问题。 – 2013-04-04 19:15:37

回答

1

您还可以使用LPCTSTR是在安全方面,如:

wcex.lpszClassName = (LPCTSTR)_T("tutorialClass"); 

做同样的事情,同时呼吁CreateWindow()功能也。

另外尝试从Visual Studio中的Build菜单中选择一次重建解决方案。

或者先选择清洁解决方案,然后再生成解决方案以查看这是否解决您的问题。

您可以执行的另一项操作是删除.ncb,.sdf,.opt,.aps文件(如果它们存在于解决方案目录中),然后再次重新构建解决方案并进行检查。

+0

演员在这里毫无意义。如果您使用'_T'或'TEXT'宏声明字符串文字,则您将拥有正确类型的字符串。铸造只是隐藏错误;没有什么比这更安全的了。 – 2013-04-05 07:35:23

+0

我知道这是毫无意义的,但它在这里工作:) – LoveMeow 2013-05-06 07:52:29

-1

我知道你的课程名称与wcex.lpszClassName = (LPCWSTR)"tutorialClass"不同;和hwnd=CreateWindow((LPCWSTR)“tutorial class”,

相关问题