鱼C论坛

 找回密码
 立即注册
查看: 3101|回复: 5

一个wind32 sdk问题

[复制链接]
发表于 2013-8-28 23:37:00 | 显示全部楼层 |阅读模式
10鱼币
#include<Windows.h>
HINSTANCE g_hInst=NULL;
LRESULT CALLBACK WndProc(HWND hWnd,UINT nMsg,WPARAM wParam,LPARAM lParam)
{
switch(nMsg)
{
case WM_PAINT:
  return 0;    //我把这条改成了返回0值,使消息无法运行默认的处理函数DefWindowProc(); 为何UpdateWindow还能重绘
case WM_DESTROY:
  PostQuitMessage(0);
  return 0;
}
return DefWindowProc(hWnd,nMsg,wParam,lParam);
}
BOOL RegisterWnd(LPCWSTR pszClassName)
{
WNDCLASSEX wce={0};
wce.cbClsExtra=NULL;
wce.cbSize=sizeof(wce);
wce.cbWndExtra=NULL;
wce.hbrBackground=HBRUSH(COLOR_BTNFACE);
wce.hCursor=NULL;
wce.hIcon=NULL;
wce.hIconSm=NULL;
wce.hInstance=g_hInst;
wce.lpfnWndProc=WndProc;
wce.lpszClassName=pszClassName;
wce.lpszMenuName=NULL;
wce.style=CS_HREDRAW|CS_VREDRAW;
if(0==RegisterClassEx(&wce))
{
  return FALSE;
}
return TRUE;
}
HWND CreateWnd(LPCWSTR pszClassName)
{
HWND hWnd=CreateWindowEx(0,pszClassName,L"MyWindow",WS_OVERLAPPEDWINDOW,
  CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
  NULL,NULL,g_hInst,NULL);
return hWnd;
}
void DisplayWnd(HWND hWnd)
{
ShowWindow(hWnd,SW_SHOW);
UpdateWindow(hWnd);
}
void Message()
{
MSG msg={0};
while(GetMessage(&msg,NULL,0,0))
{
  TranslateMessage(&msg);
  DispatchMessage(&msg);
}
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
LPSTR lpCmdLine,int nCmdShow)
{
g_hInst=hInstance;
RegisterWnd(L"wnd");
HWND hWnd=CreateWnd(L"wnd");
DisplayWnd(hWnd);
Message();
return 0;
}

最佳答案

查看完整内容

你应该在WM_PAINT中加入:BEGIN_PAINT和END_PAINT 否则该WM_PAINT消息视为违背处理,此时windows将自动再插入一条WM_PAINT消息。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-8-28 23:37:01 | 显示全部楼层
你应该在WM_PAINT中加入:BEGIN_PAINT和END_PAINT
否则该WM_PAINT消息视为违背处理,此时windows将自动再插入一条WM_PAINT消息。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-8-28 23:50:16 | 显示全部楼层
校园宿舍,忘记带电脑了。看看台风没影响就回下家顺便再帮你。有影响就。。。
期待有高手回答啦。@_@
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-8-29 00:01:58 | 显示全部楼层

谢谢您,希望能有人帮帮我
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-8-29 10:34:20 | 显示全部楼层
本帖最后由 编程难 于 2013-8-29 10:38 编辑

参考下 光版的回答 和 以下的链接,重点看最后一段。
http://baike.baidu.com/link?url= ... ISi8ZIz7akFPnfGOFt_
还有这个,说了为啥一定要在WM_PAINT消息中使用BeginPaint,EndPaint 。如果未使用一定要调用DefWindowProc (会在内部会调用BeginPaint EndPaint),
http://qiusuoge.com/8420.html


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-8-29 12:27:28 | 显示全部楼层
编程难 发表于 2013-8-29 10:34
参考下 光版的回答 和 以下的链接,重点看最后一段。
http://baike.baidu.com/link?url= ... ISi8ZIz7akFP ...

谢谢哈!想给评论,论坛居然有24小时评分上限
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-29 07:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表