这是书上的代码 ,我抄下来的 ,每次运行编译时不会出错,运行之后却没有出现窗口,但是打开任务管理器可以在进程当中找到,很是不解,特来求教
,谢谢各位大神
代码如下:
#include<stdio.h>
#include<windows.h>
LRESULT CALLBACK WinSunProc
(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM LpARAM
);
int WINAPI WinMain
(
HINSTANCE hInstance,
HINSTANCE hPrevinstance,
LPSTR lpCmdLine,
int nCmdShow
){
char lpszClassName[]="welcome";
char lpszTitle[]= "Windows";
WNDCLASS wndcls;
wndcls.cbClsExtra=0;
wndcls.cbWndExtra=0;
//指定窗口背景色
wndcls.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
//设置光标样式
wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);
//设置图标样式
wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);
wndcls.hInstance=hInstance;//指定窗口实例句柄
wndcls.lpfnWndProc=WinSunProc;//指定窗口函数,即窗口主处理函数
//窗口类名称
wndcls.lpszClassName="My First C++ Demo";
wndcls.lpszMenuName=NULL;//菜单
wndcls.style=CS_HREDRAW|CS_VREDRAW;
RegisterClass(&wndcls);//注册窗口类
HWND hwnd; //声明窗口句柄
hwnd=CreateWindow/*创建窗口,但是窗口不在这里显示*/
(
lpszClassName,/*已注册窗口类的名称*/
lpszTitle,/*窗口标题*/
WS_OVERLAPPEDWINDOW,/*窗口风格*/
200,/*窗口位置横坐标*/
200,/*窗口位置纵坐标*/
600,/*宽度*/
400,/*高度*/
NULL,
NULL,
hInstance,//实例句柄
NULL,);
//显示窗口
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);//更新显示
/**************************************************************/
/*初始工作完成后,WinMain进行消息循环*
/**************************************************************/
MSG msg;
while(GetMessage(&msg,NULL,0,0)){
TranslateMessage(&msg);//转换键盘消息
DispatchMessage(&msg);//分派消息
}
return 0;
}
/***************************************************************************/
/*窗口函数 窗口函数通常利用switch/case 方式判断消息的种类,以决定处理方式*/
/*由于其是被window系统所调用的,所以这是一种 call back函数 */
/***************************************************************************/
LRESULT CALLBACK WinSunProc
(
HWND hwnd, /*窗口句柄*/
UINT uMsg, /*消息*/
WPARAM wParam,/*参数1*/
LPARAM lParam/*参数2*/
)
{
switch(uMsg)/*判断消息类型*/
{
case WM_PAINT: /*更新窗口消息*/
HDC hDC ; /*定义dc设备*/
PAINTSTRUCT ps;
hDC=BeginPaint(hwnd,&ps);/*得到设备hDC*/
TextOut(hDC,200,0,"Visual c++ 游戏开发",strlen("Visual C++ 游戏开发"));
EndPaint(hwnd,&ps);
break;
case WM_CLOSE:/*单机关闭按钮时产生关闭消息*/
if(IDYES==MessageBox(hwnd,"是否结束?","游戏开发",MB_YESNO)){
DestroyWindow(hwnd);//单击确定销毁窗口
}
break;
default:
//此处必须调用DefWindowProc 这是windows内部默认的消息处理函数
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}

代码如下:
#include<stdio.h>
#include<windows.h>
LRESULT CALLBACK WinSunProc
(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM LpARAM
);
int WINAPI WinMain
(
HINSTANCE hInstance,
HINSTANCE hPrevinstance,
LPSTR lpCmdLine,
int nCmdShow
){
char lpszClassName[]="welcome";
char lpszTitle[]= "Windows";
WNDCLASS wndcls;
wndcls.cbClsExtra=0;
wndcls.cbWndExtra=0;
//指定窗口背景色
wndcls.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
//设置光标样式
wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);
//设置图标样式
wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);
wndcls.hInstance=hInstance;//指定窗口实例句柄
wndcls.lpfnWndProc=WinSunProc;//指定窗口函数,即窗口主处理函数
//窗口类名称
wndcls.lpszClassName="My First C++ Demo";
wndcls.lpszMenuName=NULL;//菜单
wndcls.style=CS_HREDRAW|CS_VREDRAW;
RegisterClass(&wndcls);//注册窗口类
HWND hwnd; //声明窗口句柄
hwnd=CreateWindow/*创建窗口,但是窗口不在这里显示*/
(
lpszClassName,/*已注册窗口类的名称*/
lpszTitle,/*窗口标题*/
WS_OVERLAPPEDWINDOW,/*窗口风格*/
200,/*窗口位置横坐标*/
200,/*窗口位置纵坐标*/
600,/*宽度*/
400,/*高度*/
NULL,
NULL,
hInstance,//实例句柄
NULL,);
//显示窗口
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);//更新显示
/**************************************************************/
/*初始工作完成后,WinMain进行消息循环*
/**************************************************************/
MSG msg;
while(GetMessage(&msg,NULL,0,0)){
TranslateMessage(&msg);//转换键盘消息
DispatchMessage(&msg);//分派消息
}
return 0;
}
/***************************************************************************/
/*窗口函数 窗口函数通常利用switch/case 方式判断消息的种类,以决定处理方式*/
/*由于其是被window系统所调用的,所以这是一种 call back函数 */
/***************************************************************************/
LRESULT CALLBACK WinSunProc
(
HWND hwnd, /*窗口句柄*/
UINT uMsg, /*消息*/
WPARAM wParam,/*参数1*/
LPARAM lParam/*参数2*/
)
{
switch(uMsg)/*判断消息类型*/
{
case WM_PAINT: /*更新窗口消息*/
HDC hDC ; /*定义dc设备*/
PAINTSTRUCT ps;
hDC=BeginPaint(hwnd,&ps);/*得到设备hDC*/
TextOut(hDC,200,0,"Visual c++ 游戏开发",strlen("Visual C++ 游戏开发"));
EndPaint(hwnd,&ps);
break;
case WM_CLOSE:/*单机关闭按钮时产生关闭消息*/
if(IDYES==MessageBox(hwnd,"是否结束?","游戏开发",MB_YESNO)){
DestroyWindow(hwnd);//单击确定销毁窗口
}
break;
default:
//此处必须调用DefWindowProc 这是windows内部默认的消息处理函数
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}