C语言消息处理的问题,WM_PAINT自动关闭窗口
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言消息处理的问题,WM_PAINT自动关闭窗口相关的知识,希望对你有一定的参考价值。
C中建立窗口和消息循环,本人刚刚开始用,不太熟,请各位帮忙!
源代码:
#include<windows.h>
LRESULT CALLBACK WindowProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
HDC hdc;
LPPAINTSTRUCT ss;
switch (uMsg)
case WM_DESTROY: //关闭窗口的时候结束进程
PostQuitMessage(0);
return 0;
case WM_PAINT: //重绘窗体的时候,就是这里出了问题
//加上这个窗口就闪一下自己关闭了,不加这句还蛮好的
//希望大神们帮小弟解释一下这是神马情况??
hdc = BeginPaint(hwnd,&ss);
TextOut(hdc,30,30,"Hello World",11);
EndPaint(hwnd,&ss);
return 0;
return DefWindowProc(hwnd,uMsg,wParam,lParam);
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nShowCmd)
WNDCLASS wnd;
HWND hwin;
MSG msg;
wnd.cbClsExtra = 0;
wnd.cbWndExtra = 0;
wnd.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wnd.hCursor = LoadCursor(NULL,IDC_ARROW);
wnd.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wnd.hInstance = hInstance;
wnd.lpfnWndProc = WindowProc;
wnd.lpszClassName = "sky";
wnd.lpszMenuName = NULL;
wnd.style = CS_HREDRAW | CS_VREDRAW;
if (!RegisterClass(&wnd)) //注册失败弹出失败提示
MessageBox(NULL,TEXT("报告长官!注册失败了!"),"Fail",MB_OK);
return 0;
hwin = CreateWindow("sky", //创建窗口并获得句柄
"Aloha~",
WS_OVERLAPPEDWINDOW,
100,100,400,500,
NULL,NULL,
hInstance,
NULL);
ShowWindow(hwin,nShowCmd); //显示窗体
while (GetMessage(&msg,NULL,0,0)) //建立消息循环
TranslateMessage(&msg);
DispatchMessage(&msg);
return msg.lParam;
还请各位给些实用的信息啊,在此谢过啦!
以上是关于C语言消息处理的问题,WM_PAINT自动关闭窗口的主要内容,如果未能解决你的问题,请参考以下文章
WM_PAINT消息详解,使用InvalidateRect或InvalidateRgn函数刻意产生WM_PAINT消息(WIN7里有变化,“调整视觉效果”,将“启用桌面组合”去掉)
窗口绘制有关的消息整理 WM_PAINT, WM_NCPAINT, WM_ERASEBKGND