VC++,,,消息WM_CREATE和WM_PAINT的问题~~!!
...winmain(...){...::RegisterClassEx(&wndclass);HWNDhwnd=::CreateWindowEx();...//显示窗口...
... winmain(...)
{
...
::RegisterClassEx(&wndclass);
HWND hwnd = ::CreateWindowEx();
...
// 显示窗口,刷新窗口客户区
::ShowWindow(hwnd, nCmdShow);
//::UpdateWindow(hwnd);
...
}
LRESULT CALLBACK MainWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
char szText[] = "最简单的窗口程序!";
switch (message)
{
case WM_CREATE:
{
HDC hdc;
PAINTSTRUCT ps;
hdc = BeginPaint(hwnd,&ps);
TextOut(hdc,20,20,"CREATE",strlen("CREATE"));
ReleaseDC(hwnd,hdc);
return 0 ;
}
case WM_PAINT: // 窗口客户区需要重画
{
HDC hdc;
PAINTSTRUCT ps;
// 使无效的客户区变的有效,并取得设备环境句柄
hdc = ::BeginPaint (hwnd, &ps) ;
// 显示文字
::TextOut(hdc, 10, 10, szText, strlen(szText));
::EndPaint(hwnd, &ps);
return 0;
}
case WM_DESTROY: // 正在销毁窗口
// 向消息队列投递一个WM_QUIT消息,促使GetMessage函数返回0,结束消息循环
::PostQuitMessage(0) ;
return 0 ;
}
// 将我们不处理的消息交给系统做默认处理
return ::DefWindowProc(hwnd, message, wParam, lParam);
}
//==========================================================
我即使注销//::UpdateWindow(hwnd);。。。运行后也会显示WM_PAINT中的内容,而且不显示WM_CREATE中的。怎么回事。::CreateWindowEx调用难道还后会投递WM_PAINT消息???
文本控件不能预定义文本吗?
case WM_CREATE:
{ // 设置窗口的标题
::SetWindowText(hwnd, "最简陋的打字程序");
return 0;
}
::SetWindowText为什么可以预定义标题?
case WM_CREATE:
{
HDC hdc;
PAINTSTRUCT ps;
hdc = BeginPaint(hwnd,&ps);
::TextOut(hdc,20,20,"CREATE",strlen("CREATE"));
::EndPaint(hwnd, &ps);
//ReleaseDC(hwnd,hdc);
return 0 ;
}
这个却不可以吗? 展开
{
...
::RegisterClassEx(&wndclass);
HWND hwnd = ::CreateWindowEx();
...
// 显示窗口,刷新窗口客户区
::ShowWindow(hwnd, nCmdShow);
//::UpdateWindow(hwnd);
...
}
LRESULT CALLBACK MainWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
char szText[] = "最简单的窗口程序!";
switch (message)
{
case WM_CREATE:
{
HDC hdc;
PAINTSTRUCT ps;
hdc = BeginPaint(hwnd,&ps);
TextOut(hdc,20,20,"CREATE",strlen("CREATE"));
ReleaseDC(hwnd,hdc);
return 0 ;
}
case WM_PAINT: // 窗口客户区需要重画
{
HDC hdc;
PAINTSTRUCT ps;
// 使无效的客户区变的有效,并取得设备环境句柄
hdc = ::BeginPaint (hwnd, &ps) ;
// 显示文字
::TextOut(hdc, 10, 10, szText, strlen(szText));
::EndPaint(hwnd, &ps);
return 0;
}
case WM_DESTROY: // 正在销毁窗口
// 向消息队列投递一个WM_QUIT消息,促使GetMessage函数返回0,结束消息循环
::PostQuitMessage(0) ;
return 0 ;
}
// 将我们不处理的消息交给系统做默认处理
return ::DefWindowProc(hwnd, message, wParam, lParam);
}
//==========================================================
我即使注销//::UpdateWindow(hwnd);。。。运行后也会显示WM_PAINT中的内容,而且不显示WM_CREATE中的。怎么回事。::CreateWindowEx调用难道还后会投递WM_PAINT消息???
文本控件不能预定义文本吗?
case WM_CREATE:
{ // 设置窗口的标题
::SetWindowText(hwnd, "最简陋的打字程序");
return 0;
}
::SetWindowText为什么可以预定义标题?
case WM_CREATE:
{
HDC hdc;
PAINTSTRUCT ps;
hdc = BeginPaint(hwnd,&ps);
::TextOut(hdc,20,20,"CREATE",strlen("CREATE"));
::EndPaint(hwnd, &ps);
//ReleaseDC(hwnd,hdc);
return 0 ;
}
这个却不可以吗? 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询