WM_NCPAINT到底肿么用?小弟我在里面画东西如何显示不出来?
WM_NCPAINT到底肿么用?我在里面画东西怎么显示不出来??????!!!!!!
在WM_PAINT里 TextOut(hdc,10,10,TEXT("abcd"),4);就显示在客户区了
在WM_NCPAINT里
这就什么也显示不出来。我想难道是坐标问题? GetWindowRect完了,把窗口坐标加进去,还是不行
到底肿么样才行?
我用的是SDK,所以各位大神最好是用sdk的说法回帖;MFC也可以,说明白就行
------解决方案--------------------
"hdc = GetDCEx(hWnd, (HRGN)wParam, DCX_WINDOW|DCX_INTERSECTRGN);"
hdc=0 !
------解决方案--------------------
case WM_NCPAINT:
ret=DefWindowProc(hwnd,message,wParam,lParam);
hdc=GetWindowDC(hwnd);
// Paint into this DC
if(hdc)
{
TextOut(hdc,400,10,TEXT("abcd"),4);
ReleaseDC(hwnd, hdc);
}
return ret;
//break;
------解决方案--------------------
------解决方案--------------------
做非客户区自绘要自己处理所有消息不单单是WM_NCPAINT
还有WM_NCPAINT、WM_NCACTIVATE、WM_NCCALCSIZE、WM_NCHITTEST、WM_NCLBUTTONDOWN、WM_NCLBUTTONUP、WM_NCMOUSEMOVE
------解决方案--------------------
这样就可以了:
case WM_NCACTIVATE:
case WM_NCPAINT:
ret=DefWindowProc(hwnd,message,wParam,lParam);
//hdc=GetWindowDC(hwnd);//without CS_CLASSDC!needs DCX_CACHE
hdc = GetDCEx(hwnd, (HRGN)1, DCX_WINDOW|DCX_INTERSECTRGN|DCX_CACHE);
// Paint into this DC
if(hdc)
{
TextOut(hdc,400,10,TEXT("abcd"),4);
ReleaseDC(hwnd, hdc);
}
return ret;
------解决方案--------------------
还是把标题栏去掉更省事,或者nccalsize的时候把客户区拉的跟dialog一样大,我反正经常这么干
在WM_PAINT里 TextOut(hdc,10,10,TEXT("abcd"),4);就显示在客户区了
在WM_NCPAINT里
- C/C++ code
case WM_NCPAINT: { HDC hdc; hdc = GetDCEx(hWnd, (HRGN)wParam, DCX_WINDOW|DCX_INTERSECTRGN); // Paint into this DC TextOut(hdc,10,10,TEXT("abcd"),4); ReleaseDC(hWnd, hdc); } break;
这就什么也显示不出来。我想难道是坐标问题? GetWindowRect完了,把窗口坐标加进去,还是不行
到底肿么样才行?
我用的是SDK,所以各位大神最好是用sdk的说法回帖;MFC也可以,说明白就行
------解决方案--------------------
"hdc = GetDCEx(hWnd, (HRGN)wParam, DCX_WINDOW|DCX_INTERSECTRGN);"
hdc=0 !
------解决方案--------------------
case WM_NCPAINT:
ret=DefWindowProc(hwnd,message,wParam,lParam);
hdc=GetWindowDC(hwnd);
// Paint into this DC
if(hdc)
{
TextOut(hdc,400,10,TEXT("abcd"),4);
ReleaseDC(hwnd, hdc);
}
return ret;
//break;
------解决方案--------------------
------解决方案--------------------
做非客户区自绘要自己处理所有消息不单单是WM_NCPAINT
还有WM_NCPAINT、WM_NCACTIVATE、WM_NCCALCSIZE、WM_NCHITTEST、WM_NCLBUTTONDOWN、WM_NCLBUTTONUP、WM_NCMOUSEMOVE
------解决方案--------------------
这样就可以了:
case WM_NCACTIVATE:
case WM_NCPAINT:
ret=DefWindowProc(hwnd,message,wParam,lParam);
//hdc=GetWindowDC(hwnd);//without CS_CLASSDC!needs DCX_CACHE
hdc = GetDCEx(hwnd, (HRGN)1, DCX_WINDOW|DCX_INTERSECTRGN|DCX_CACHE);
// Paint into this DC
if(hdc)
{
TextOut(hdc,400,10,TEXT("abcd"),4);
ReleaseDC(hwnd, hdc);
}
return ret;
------解决方案--------------------
还是把标题栏去掉更省事,或者nccalsize的时候把客户区拉的跟dialog一样大,我反正经常这么干