主题:自绘按钮的问题!!!
InitInstance
[专家分:8720] 发布于 2006-05-05 01:09:00
要自绘按钮,需要获得一个DC句柄,比如要在对话框中自绘一个按钮,应该怎么样获得DC句柄??
HWND hdlg;
HDC hdc=GetDC(hdlg);.
....
DrawFrameControl()
...
这样可以画出框架吗?
我试了,好象不行,还望大虾指点一二。
回复列表 (共6个回复)
沙发
029 [专家分:5460] 发布于 2006-05-05 04:00:00
把这个当参数传递啊
板凳
aaronwang [专家分:16870] 发布于 2006-05-05 09:28:00
晕,用自绘制按钮嘛.系统会产生WM_DRAWITEM消息,
The WM_DRAWITEM message is sent to the parent window of an owner-drawn button, combo box, list box, or menu when a visual aspect of the button, combo box, list box, or menu has changed.
A window receives this message through its WindowProc function.
Syntax
WM_DRAWITEM
WPARAM wParam
lpDrawItem = (LPDRAWITEMSTRUCT) lParam;
其中DRAWITEMSTRUCT中就已经包含了一个DC句柄了.
3 楼
InitInstance [专家分:8720] 发布于 2006-05-05 23:25:00
WM_DRAWITEM 消息何时产生?
试了一下:
case WM_DRAWITEM :
....
MessageBox(...);
...
break;
却没有从MessageBox中得到过任何信息。
-------------------------------
学习中,还请大虾多多指教。
4 楼
aaronwang [专家分:16870] 发布于 2006-05-06 10:13:00
只有当控件拥有自绘制样式(如按钮是:BS_OWNERDRAW)时才会发送自绘制消息.
具体请参见MSDN.
5 楼
xiaoming126 [专家分:60] 发布于 2006-05-07 12:30:00
三郎,我看了你的主题,帮不了你。支持你!
顶!
6 楼
InitInstance [专家分:8720] 发布于 2006-05-07 15:30:00
恩,谢谢你们的支持,我已经找到例子了(基本代码),好不容易在图书馆的“故纸堆”里捞到一本(很旧的一本,95年版的了),都是用SDK方式写的,俺想做个XP样式的。
我来回复