关于自绘制按钮的小问题

scorpio_tiger 2008-09-19 10:54:57
小弟最近在学习自绘制按钮,想写一个类继承自CButton,并且此类以DLL形式封装,在实际操作过程中遇到以下问题,请大侠们帮忙解答:
1、自绘制按钮须在鼠标状态不同的时候,显示不同的icon,icon已经创建好,并且鼠标的WM_MOUSEHOVER, WM_MOUSELEAVE消息已经捕捉到,通过函数调用后发现,icon并没有显示在button上,代码如下:(此函数已经验证 被调用)
LRESULT CSheerButton::OnMouseHover(WPARAM wParam, LPARAM lParam)
{
HICON hIcon= ::LoadIcon(NULL, MAKEINTRESOURCE(IDI_ICON_HONOR));
SetIcon(hIcon);
}
2、用动态链接库对此类进行封装,对外提供时,icon,bitmap这些资源应如何提供,能否直接编译到dll中?如果不能,应如何提供,若能,请提供大致思路。

不胜感激!!
...全文
153 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
菜牛 2008-09-23
  • 打赏
  • 举报
回复
当前资源句柄问题,使用DLL中的资源需要进行切换,用AfxSetResourceHandle()函数切换。
xiaopangzi_1 2008-09-22
  • 打赏
  • 举报
回复
按钮要具有BS_ICON风格,可以在创建时设置,也可以用ModifyStyle修改。判断状态在DRawITem里面画图,在该画的地方画
summitily 2008-09-21
  • 打赏
  • 举报
回复
这样并没有使button重绘,应该在DrawItem函数中绘制button,网上有许多CButton的例子,csdn里也有,我好像还上传过,仔细研究一下,你就会明白了
wgm001 2008-09-19
  • 打赏
  • 举报
回复
1、按钮要具有BS_ICON风格,可以在创建时设置,也可以用ModifyStyle修改。
2、如果是MFC规则DLL,并且项目设置为使用共享DLL中的MFC,需要在所有被外部调用的函数入口加上AFX_MANAGE_STATE(AfxGetStaticModuleState())。
cnzdgs 2008-09-19
  • 打赏
  • 举报
回复
1、按钮要具有BS_ICON风格,可以在创建时设置,也可以用ModifyStyle修改。
2、如果是MFC规则DLL,并且项目设置为使用共享DLL中的MFC,需要在所有被外部调用的函数入口加上AFX_MANAGE_STATE(AfxGetStaticModuleState())。
jameshooo 2008-09-19
  • 打赏
  • 举报
回复
LoadIcon第一个参数改成AfxGetResourceHandle()后就可以在DLL文件里寻找资源了
m_nNightmire 2008-09-19
  • 打赏
  • 举报
回复
1.建议重载OnPaint()函数
2.可以,调用一下AfxSetResourceHandle就行了
ToperRay 2008-09-19
  • 打赏
  • 举报
回复
CButtonST 看看这个工程。
  • 打赏
  • 举报
回复
不要在OnMouseHover里画,重载DrawItem函数,在这里画。可以参看CButtonST

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧