问题描述
- 为什么我写的窗口函数编译通过没有产生窗口?
-
#include
#include
#include
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);//窗口函数说明
//初始化窗口类
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow)
{HWND hwnd;
MSG Msg;
WNDCLASS wndclass;
char lpszClassName[]="窗口";//窗口类名
char lpszTitle[]="My_Windows";//窗口标题名
//窗口类的定义
wndclass.style=0; //窗口类型为缺省类型
wndclass.lpfnWndProc=WndProc; //定义窗口处理函数
wndclass.cbClsExtra=0;//窗口类无扩展
wndclass.cbWndExtra=0;//窗口实例无扩展
wndclass.hInstance=hInstance;//当前实例句柄
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);//窗口最小化图标为缺省图标
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);//窗口采用箭头光标
//wndclass.hbrBackground=(BRUSH)GetStockObject(WHITE_BRUSH);//窗口背景为白色
wndclass.lpszMenuName=NULL;//窗口中无背景菜单
wndclass.lpszClassName=lpszClassName;//窗口类名为 窗口
//窗口类的注册
if(!RegisterClass(&wndclass))//如果注册失败则发出警告
{MessageBeep(0);
return FALSE;
}
//创建窗口
hwnd=CreateWindow
(lpszClassName,//窗口类名
lpszTitle, //窗口实例的标题名
WS_OVERLAPPEDWINDOW,//窗口风格
CW_USEDEFAULT,//窗口左上坐标为缺省
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,//窗口高和宽为缺省值
NULL,//窗口无父窗口
NULL,//窗口无主菜单
hInstance,//创建此窗口的应用程序的当前句柄
NULL //不适用该值
);
//显示窗口
ShowWindow(hwnd,nCmdShow);
//绘制用户区
UpdateWindow(hwnd);
//消息循环
while(GetMessage(&Msg,NULL,0,0))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;//消息循环结束程序终止时将信息返回给系统
}
//窗口函数
LRESULT CALLBACK WndProc
(HWND hwnd,
UINT message,
WPARAM wParam,
LPARAM lParam
)
{switch(message)
{case WM_DESTROY:PostQuitMessage(0);
default://缺省时采用系统消息处理函数
return DefWindowProc(hwnd,message,wParam,lParam);}
return (0);
}
解决方案
wndclass.hbrBackground=(HBRUSH)(COLOR_WINDOW+1); //(BRUSH)GetStockObject(WHITE_BRUSH);//窗口背景为白色
加上这行,运行成功
解决方案二:
oracle的窗口windowing函数
探秘窗口过程函数(WndProc)的Thunk技术
解决方案三:
我在外面,回家上机试试你的代码
时间: 2024-09-04 02:29:04