#include<windows.h>
#include<stdio.h>
//声明窗口过程函数
LRESULT CALLBACK WinSunProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
);
//编写WinMain函数
int WINAPI WinMain
(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)//注意没有冒号
{
//设计窗口类,给所有成员赋值
WNDCLASS wndcls;//WNDCLASS 为窗口类名,wndcls为窗口类对象,接下来为WNDCLASS里的每一个成员赋值
wndcls.cbWndExtra =0;
wndcls.cbClsExtra=0;
wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);//用GetStockObject这个函数从库里选择一个黑色的现成的黑色画刷
wndcls.hCursor =LoadCursor(NULL,IDI_ERROR);//用这个函数从库里获取一个图标,前参数为句柄,后者是句柄类型
wndcls.hInstance =hInstance;//WinMain函数里有个当前应用程序句柄,当调用WinMain函数是,它就会传过来一个应用程序句柄
wndcls.lpfnWndProc =WinSunProc;//将窗口过程函数的名字赋给他,因为函数的名字就是一个指针(地址),注意不是窗口类的名字
wndcls.lpszClassName ="liquanfu2009";
wndcls.lpszMenuName =NULL;
wndcls.style =CS_HREDRAW|CS_VREDRAW;
//注册窗口类
RegisterClass(&wndcls);//用RegisterClass这个函数注册,将设计的窗口类的对象Wndcls的地址传给这个函数
//创建窗口
HWND hwnd;
hwnd=CreateWindow("liquanfu2009","我的窗口",WS_OVERLAPPEDWINDOW,0,0,600,400,NULL,NULL,hInstance,NULL);//WS_OVERLAPPWDWINDOW是要显示的窗口的样式
//显示窗口
ShowWindow(hwnd,SW_SHOWNORMAL);//SW_SHOWNORMAL是显示的方式
//更新窗口
UpdateWindow(hwnd);
//消息循环
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
///////////////
//窗口过程函数的定义
LRESULT CALLBACK WinSunProc
(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
switch(uMsg)
{
case WM_CHAR:
char szChar[20];
sprintf(szChar,"char code is %d",wParam);//第一个szChar 是指对这个数组进行格式化,然后把WPARAM这个东西格式化它
MessageBox(hwnd,szChar,"char",0);//弹出消息框,有四个参数,这个消息框函数用于输出字符数组的内容输出,由平台SDK提供函数,第一个参数是要显示的窗口句柄,第二个是输出内容,三是消息的标题,四是输出的样式
break;
case WM_LBUTTONDOWN://鼠标左键的按下的消息
MessageBox(hwnd,"mouse clicked","message",0);
HDC hdc;//用HDC结构体定义一个对象
hdc=GetDC(hwnd);//返回一个HDC对象
TextOut(hdc,0,50,"My window",strlen("My window"));//调用这个函数在窗口输出内容,参数一是HDC对象,二和三是显示的位置,四是内容,五是内容的长度
//获取DC后要释放DC
ReleaseDC(hwnd,hdc);
break;
case WM_PAINT://
HDC hDC;//定义对象
PAINTSTRUCT ps;//定义对象
hDC=BeginPaint(hwnd,&ps);//返回值是hDC,这个函数只能在相应WH_PAINT类消息中使用,和下面的EndPaint配套使用
TextOut(hDC,0,0,"My program",strlen("My program"));
EndPaint(hwnd,&ps);
case WM_CLOSE://关闭窗口的消息
if(IDYES==MessageBox(hwnd,"do you quit?","message",MB_YESNO))//MB_VESNO提供两个按钮,是和否,返回YES或NO
DestroyWindow(hwnd);//当选择确定时消除窗口
break;
case WM_DESTROY://退出消息
PostQuitMessage(0);//向应用程序发出退出的消息
break;
default://都不是以上的消息类型
return DefWindowProc(hwnd,uMsg,wParam,lParam);//调用默认的窗口过程函数
}
return 0;//结束整个函数
}
窗口类应用程序已经编译成功,为什么显示一直在连接,就是没有界面出来,是什么问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- threenewbee 2016-02-20 23:00关注
代码是从哪里来的,如果是赋值粘贴来的,
wndcls.hCursor =LoadCursor(NULL,IDI_ERROR);
这里提到的那个图标资源,你的程序有么?建议你用VC++的模板创建一个win32程序,再在它的基础上修改。
解决 无用评论 打赏 举报
悬赏问题
- ¥15 程序不包含适用于入口点的静态Main方法
- ¥15 素材场景中光线烘焙后灯光失效
- ¥15 请教一下各位,为什么我这个没有实现模拟点击
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置
- ¥15 有没有研究水声通信方面的帮我改俩matlab代码
- ¥15 ubuntu子系统密码忘记