首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

为什么小弟我的窗口重画时,小弟我画的图没有了,源文件不是播放了吗

2012-03-06 
为什么我的窗口重画时,我画的图没有了,源文件不是播放了吗LRESULTCALLBACKWndProc(HWNDhwnd,UINTuMsg,WPAR

为什么我的窗口重画时,我画的图没有了,源文件不是播放了吗
LRESULT   CALLBACK     WndProc(HWND   hwnd,   UINT   uMsg,   WPARAM   wParam,   LPARAM   lParam   )
{
PAINTSTRUCT   ps;  
HDC   hdc;
static   HDC   hMetaDC=CreateMetaFile(NULL);
        HMETAFILE   hMetaFile;
int   wmId   ;  
int   wmEvent;
switch(uMsg)
{
case   WM_COMMAND:
wmId         =   LOWORD(wParam);  
wmEvent   =   HIWORD(wParam);
{
switch(wmId)
{
case   ID_LINE:
dk=1;
break;
case   ID_CIRCLE:
dk=2;
break;
case   ID_RANT:
dk=3;
break;
default:
dk=-1;
}
}
break;
case   WM_PAINT:
hdc=::BeginPaint(hwnd,&ps);
hMetaFile=CloseMetaFile(hMetaDC);
PlayMetaFile(hdc,hMetaFile);
DeleteMetaFile(hMetaFile);
hMetaDC=::CreateMetaFile(NULL);
::EndPaint(hwnd,&ps);
break;
case   WM_DESTROY:
DestroyWindow(hwnd);
PostQuitMessage(0);
break;
case   WM_LBUTTONDOWN:
switch(dk)
{
case   -1:
break;
case   1:
case   2:
case   3:
p1.x=LOWORD(lParam);
p1.y=HIWORD(lParam);
break;        
}
case   WM_LBUTTONUP:
switch(dk)
{
case   -1:
break;
case   1:
p2.x   =   LOWORD(lParam);  
p2.y   =   HIWORD(lParam);  
hdc=GetDC(hwnd);
MoveToEx(hdc,p1.x,p1.y,   (LPPOINT)   NULL);
LineTo(hdc,p2.x,p2.y);
MoveToEx(hMetaDC,p1.x,p1.y,   (LPPOINT)   NULL);
LineTo(hMetaDC,p2.x,p2.y);
break;    
case   2:
p2.x   =   LOWORD(lParam);  
p2.y   =   HIWORD(lParam);  
hdc=GetDC(hwnd);
Ellipse(hdc,p1.x,p1.y,p2.x,p2.y);
Ellipse(hMetaDC,p1.x,p1.y,p2.x,p2.y);
break;
case   3:
p2.x   =   LOWORD(lParam);  
p2.y   =   HIWORD(lParam);  
hdc=GetDC(hwnd);
Rectangle(hdc,p1.x,p1.y,p2.x,p2.y);
Rectangle(hMetaDC,p1.x,p1.y,p2.x,p2.y);
break;
}
default:
return   ::DefWindowProc(hwnd,uMsg,wParam,lParam);

}
}

[解决办法]
没太明白
[解决办法]
画图的部分应该放在wm_paint里面去。

热点排行