求助:《VC.NET技术内幕》(第6版)中一个例子的问题
在书中116页的示列ex06e是演示如何在普通按钮上显示不同的位图,程序如下:
1.用MFC向导生成了项目,选择Single Document并取消Printing And Print Preview选项,其他接受默认设置。
2.向IDD_ABOUTBOX对话框中加入3个按钮,分别为:IDC_BUTTON1的Caption为Copy,IDC_BUTTON2的Caption为Cut,IDC_BUTTON3的Caption为Paste。
3.向项目添加3个位图:EditCopy.bmp, EditPast.bmp, EditCut.bmp。
书中的原话为:“从EditCopy.bmp开始,为它分配名字“COPYU”。一定要在名字两边加引号,这样就表示用名字标识资源而不是用ID。现在就有了凸起时的位图。关闭位图,从Resource View窗口中用剪贴板对位图做一份拷贝。重新命名拷贝为“COPYD”(凹下状态),然后编辑位图。从Image菜单中选择Invert Colors。重复以上步骤,建立EditCut和EditPast位图。”
4.向CAboutDlg类中加入三个私有数据成员:
CBitmapButton m_editCopy;
CBitmapButton m_editCut;
CBitmapButton m_editPaste;
然后改写CAboutDlg类中的OnInitDialog函数:
BOOL CAboutDlg::OnInitDialog()
{
CDiglog::OnInitDialog();
VERIFY(m_editCopy.AutoLoad(IDC_BUTTON1,this));
VERIFY(m_editCut.AutoLoad(IDC_BUTTON2,this));
VERIFY(m_editPaste.AutoLoad(IDC_BUTTON3,this));
return TRUE;
}
5.用下面的代码代替MFC向导生成的OnDraw函数代码:
pDC->TextOut(0, 0, "choose About from the Help menu.");
6.编译测试程序;
小弟有两点不明白的地方:
一.“一定要在名字两边加引号,这样就表示用名字标识资源而不是用ID”这句话是什么意思。
二.书中说是通过AutoLoad函数把每个按钮和两个匹配的资源连接起来的。请问是怎么连接起来的,为什么就一定会是EditCopy.bmp在Copy按钮上,EditPast.bmp在Paste按钮上,而EditCut.bmp在Cut按钮上喃?
谢谢了哈
问题点数:0、回复次数:2Top
1 楼mengjj(世界在变)回复于 2004-11-03 08:53:57 得分 0
圖與按鈕之所以能夠一一對應起來﹐是靠按鈕的caption和圖的名字"類似"﹐比如你如果要一個按鈕的圖片為"CUTU"和"CUTD",你就必須把按鈕的caption設置為"cut"Top
2 楼Pigwen(Pigwen)回复于 2004-11-03 09:08:46 得分 0
谢谢了哈Top




