📄 subject_32936.htm
字号:
<p>
序号:32936 发表者:llisary 发表日期:2003-03-16 16:44:00
<br>主题:帮帮我啊!!!!!
<br>内容:怎么样才能在BUTTON上贴上图片,达到位图按钮一样的效果??<BR>多谢大家帮忙,小女子感激不尽!!<BR>^_^
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:luowen 回复日期:2003-03-16 18:40:38
<br>内容:有一种简单的方法:<BR> 我们知道Windows是一个图形界面的操作系统,如果在我们的应用程序中加入一些图形的话,会起到锦上添花的效果。在VC++中使用位图,并不像在VB中信手拈来那么简单。不过也并不复杂,其中以位图按钮用途较广。<BR>选定要使用位图的按钮(以OK按钮为例,假设其标识符为IDC_BtonOK),选其属性中的Owner draw选项,此时,在对话框编辑器中就可看到原先显示在按钮上的字符都消失了。将按钮的Caption改为OK(必须为大写)。打开Insert菜单,单击其中的Resource选项,随后选择Bitmap。再按下Import(导入)按钮,将所需位图导入项目(Project)。可以在Resource View窗口中通过右键单击刚才导入的位图,将其ID(标识符)改为“OKU”,注意:字符必须为大写,双引号及字母U必不可少。字母U代表的按钮为按下状态时所显示的位图。此外还可使用后缀D、F、X,分别表示按下、拥有输入焦点时、按钮处于无效状态时所显示的位图。通过对同一个按钮的不同状态使用不同的位图,很容易做出具有动态效果的按钮。<BR> 当将按钮所需使用的位图导入到项目中后,就应该在使用位图按钮的那个对话框的类声明文件中加入位图按钮变量的定义CBitmapButton m_BtonOK。同时,在适当的位置(一般是在对话框的OnInitDialog()函数中)加入如下语句:m_BtonOK.AutoLoad(IDC_BtonOK),使程序在? 时将位图装入内存并显示。至此,创建位图按钮的整个步骤即告结束。<BR> 上述方法不仅限于创建位图按钮,还可用于在对话框上显示简单的位图。嘘,告诉你一个小秘密,位图按钮所使用的颜色最多可达256种,而非位图编辑器中的16种。但对于256色位图,当在导入VC++的位图编辑器后就不能使用该编辑器作任何修改。否则在编译连接后,原先256色位图就变成16色位图了。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:凌仕晓 回复日期:2003-03-16 20:24:37
<br>内容://哈,楼上的方法不太灵活(呵,至少我这样认为,别见怪)<BR>//看看这个:<BR><BR>HBITMAP hbitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),"f:\\aaa.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);<BR>//上面的"f:\\aaa.bmp"为图片位置<BR>CButton * button;<BR>button=(CButton* )GetDlgItem(IDC_BUTTON2);//改成你相应按钮的ID<BR>button->SetBitmap(hbitmap);<BR>//只要这四行就可以了,把上面几行加到 OnInitDialog() 函数中<BR>//赶快试一下吧,别忘了给分 :)
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:水草98 回复日期:2003-03-17 09:43:28
<br>内容:lingshixiao的方法没成功啊
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:凌仕晓 回复日期:2003-03-17 19:59:27
<br>内容:没成功,简直不可能!!!!!!!!!!!!!! 我一直这样做,可能是你的 Button 的属性中没有把Bitmap设为true吧,检查一下,另外这些代码是加在你的对话框的 cpp 的 OnInitDialog()中.
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:luowen 回复日期:2003-03-18 18:43:39
<br>内容:你必须在设计对话框时选择按钮的属性为Bitmap,否则SetBitmap不起作用。而且最好CBitmap bitmap定义为类成员或全局变量,因为如果m_Button.SetBitmap(hMyBitmap);后面没有语句就退出了函数,那么CBitmap bitmap会立即释放,导致按钮为空白的。除非你在m_Button.SetBitmap(hMyBitmap);后面有大量语句,可以保证CBitmap bitmap不会立即释放。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:llisary 回复日期:2003-03-19 20:51:24
<br>内容:lingshixiao,你的方法很有用耶,好感谢!<BR>我已经接受你的答案,为你加分了哦。看我多好啊 ^_^<BR>对了,能不能在按钮上又有图片,又能有文字啊???<BR>多谢啊!!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:圆锥曲线 回复日期:2003-03-21 19:10:51
<br>内容:可以用一个类来实现的。<BR>有类似的帖子。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -