欢迎来到天天文库
浏览记录
ID:38254918
大小:317.63 KB
页数:6页
时间:2019-06-07
《VC++6.0_一个简单的图片按钮示例》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、VC++6.0一个简单的图片按钮示例VC++2008-11-2617:07:37阅读621评论0字号:大中小 用以下例子,说明如何在VC++6的对话框中添加一个图片按钮。先给出运行的效果截图,图A为对话框最初加载,图B为鼠标单击时的效果。图一,初加载对话框图二,鼠标左键单击的效果 工程名为“TT” 此工程为基于对话框的,所以新建工程时,选择MFCAppWizard(exe)->基于对话框。 工程中有一个默认对话框,其ID为“IDD_TT_DIALOG”,其上有默认的“确定”“取消”按钮,在上面加一个按钮,ID就用默认的“ID
2、C_BUTTON1”。 单击“样式”选项卡,修改其属性:“所有者绘制”与“位图”前的复选框必须打勾。 接下来制作两个图标,分别对应按钮的两种状态,一是初始状态,二是单击状态。从网上搜索两个图片,一般为jpg格式,先另保存为bmp,然后用PS进行处理, 将图片的模式改为索引模式,颜色为256,因为超过256将不能用VC++的图片编辑器加载。 将两个图片引入工程中,ID都采用默认的吧。 在对话框类中添加成员变量,类型为CBitmapButton,变量名为m_BitmapBtn,全局变量或局部变量均可。!!不要这一行,删除
3、!!!这个在对话框类的DoDataExchange函数中添加代码,DDX_Control(pDX,IDC_BUTTON1,m_BitmapBtn);在对话框类的初始化函数中添加代码,m_BitmapBtn.LoadBitmaps(IDB_BITMAP1,IDB_BITMAP2);编译后运行,即成功。以下给出代码片段供参考。 voidCTTDlg::DoDataExchange(CDataExchange*pDX){ CDialog::DoDataExchange(pDX); DDX_Control(pDX,IDC_BUT
4、TON1,m_BitmapBtn);//这句是我加的 //{{AFX_DATA_MAP(CTTDlg) //NOTE:theClassWizardwilladdDDXandDDVcallshere //}}AFX_DATA_MAP} BOOLCTTDlg::OnInitDialog(){ CDialog::OnInitDialog(); //Settheiconforthisdialog. Theframeworkdoesthisautomatically // whentheapplication'smainwindow
5、isnotadialog SetIcon(m_hIcon,TRUE); //Setbigicon SetIcon(m_hIcon,FALSE); //Setsmallicon //TODO:Addextrainitializationhere m_BitmapBtn.LoadBitmaps(IDB_BITMAP1,IDB_BITMAP2);//这句是我加的 returnTRUE; //returnTRUE unlessyousetthefocustoacontrol} 注:在onInitDialog()的return
6、之前加上m_BitmapBtn.SubclassDlgItem(IDC_BUTTON1,this);//关联到按钮m_BitmapBtn.SizeToContent();//函数使按钮适合图片大小才能实现讲的效果另外添加变量时在程序中定义一个CBitmapButton成员变量。注意:不能使用ClassWizard为按钮映射一个CButton变量,然后改为CBitmapButton,这么做并不能将按钮直接映射为CBitmapButton类的对象,反而会出现初始化错误CBitmapButtonm_btnX1;定义变量,必须放在函
7、数外面才能正常实现手动加入的话,应该在DoDataExchange里将手动的它与控件资源相联系起来,加入DDX_Control(pDX, IDC_BUTTON3, m_btnX);如下所示:void CTestdlg1Dlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CTestdlg1Dlg)//}}AFX_DATA_MAP DDX_Control(pDX, IDC_BUTTON3, m_
8、btnX);}
此文档下载收益归作者所有