孙鑫老师 WinMain 无法显示窗口,请帮忙解答
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
LRESULT CALLBACK CallBack(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
);
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nShowCmd
)
{
WNDCLASS wndclass;
wndclass.cbClsExtra =0;
wndclass.cbWndExtra =0;
wndclass.hbrBackground =(HBRUSH)GetStockObject(BLACK_BRUSH);
wndclass.hCursor = LoadCursor(NULL,IDC_HAND);
wndclass.hIcon = LoadIcon(NULL,IDI_INFORMATION);
wndclass.hInstance=hInstance;
wndclass.lpfnWndProc = CallBack;
wndclass.lpszClassName =_T("WinMain");
wndclass.lpszMenuName=NULL;
wndclass.style=CS_HREDRAW|CS_VREDRAW;
RegisterClass(&wndclass);
HWND hwnd;
hwnd=CreateWindow(_T("WinMain"),_T("第一个WINAPI窗口"),WS_OVERLAPPEDWINDOW ,0,0,600,400,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK CallBack(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
switch(uMsg)
{
case WM_CHAR:
char szChar[20];
printf(szChar,_T("the char is d%"),wParam);
MessageBox(hwnd,szChar,"按键虚拟键码",0);
break;
case WM_LBUTTONDBLCLK:
HDC hdc;
hdc = GetDC (hwnd);
TextOut(hdc,0,50,_T("C++ WinAPI编程"),strlen("C++ WinAPI编程"));
ReleaseDC(hwnd,hdc);
break;
case WM_PAINT:
HDC hDc;
PAINTSTRUCT ps;
hDc=BeginPaint(hwnd,&ps);
TextOut (hDc,0,0,_T("C++ WinAPI编程"),strlen(_T("C++ WinAPI编程")));
EndPaint(hwnd,&ps);
break;
case WM_CLOSE:
if(IDYES ==MessageBox(hwnd,"是否关闭窗口?","关闭提示",MB_YESNO))
{
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}
代码如上,按F5可以开始运行,但是窗口不显示。另外F11不能逐步调试,请各位大侠帮忙看一下怎么回事,谢谢!!!!
[解决办法]
怀疑 lz 的编译器有问题
[解决办法]
VC6, VC8 编译都没问题,出了代码本身的缺陷
复制的 lz 的代码