DWORD dwStyleOld, dwStyleNew;
dwStyleOld=GetWindowLong(hButtonWnd,GWL_STYLE);
dwStyleNew=WS_CHILD|WS_VISIBLE|BS_OWNERDRAW;
SetWindowLong(hButtonWnd,GWL_STYLE,dwStyleNew);注意:它的WM_DRAWITEM消息是发给button的父窗口,不是button本身!
dwStyleOld=GetWindowLong(hButtonWnd,GWL_STYLE);
dwStyleNew=WS_CHILD|WS_VISIBLE|BS_OWNERDRAW;
SetWindowLong(hButtonWnd,GWL_STYLE,dwStyleNew);注意:它的WM_DRAWITEM消息是发给button的父窗口,不是button本身!
解决方案 »
- win7下CButton的SetIcon有点问题
- MFC中向导默认生成的MDI程序,如果让视图在打印预览的时候最大化,其它时候按创建的尺寸显示(非最大化)?
- 请教三维图形的缩放问题
- 问一个很白痴的问题(望大师们理我一下就足够了):究竟C++,VC++,C#,VC++.NET,c#.NET有什么区别和联系?
- 我的代码提示不见了,怎么让他出现啊?
- socket菜鸟问题。麻烦各位大虾帮小弟看看。谢谢
- 只求一色!!!
- 请问,怎么样吧,资料库的东西,写到一个LIST控件里面,就想EXCEL一样,还可以把里面的内容打印出来,有列字嘛?
- 哪位大虾搞过位图图象压缩?能否提供实例算法?
- 抢分啦,怎样在bottom上实现...?
- 我怎么用socket连接一个URL??????????不用CSocket类
- 我是女孩子,用VB做程序员1年多(这个条件找工作比较困难),现改学VC了。想请各位高手指点迷津,怎样快速学好VC,我好再找出路。另:我想问问以我这样的条件在上海能顺利找到工作吗?月薪能有多少?谢谢谢谢…………
不要设BUTTON的CALLBACK函数,
在父窗口的处理函数中处理就行了。
...
hButton = CreateWindow(....BS_OWNERDRAW | WS_CHILD | WS_VISIBLE ....);
ButtonWnd = (WNDPROC)SetWindowLong(hButton,GWL_WNDPROC,(LONG)ButtonProc);
...
WM_DRAWITEM:
return TRUE;
....
BOOL CALLBACK ButtonProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
switch(message){
....
WM_DRAWITEM:
return TRUE;
}
return ::CallWindowProc(ButtonWnd,hwnd,message,wParam,lParam);
}
只要我调用SetWindowLong(),主窗口过程就收不到WM_DRAWITEM了,BUTTON的窗口过程也收不到,我就连整个BUTTON都出不来了!我不可能用WM_PAINT来做这个事吧!总之烦死了!谁要是真的想帮我请加我的QQ把:29139202,稽首为谢了!!
or you can leave your email..