MFC资源基础实例

时间:2021-10-20 00:43:50

一、主窗口及版本信息修改

1.创建一个基于单文档的MFC.EXE程序
2.导入一张图标,并把图标ID改为IDR_MAINFRAME,把原来的IDR_MAINFRAME删除,删除方法:选中->键盘Delete.
3.将程序标题改为”第五章-文字和图形输出程序”
方法:打开资源的String Table,双击IDR_MAINFRAME,进入后将IDR_MAINFRAME的内容(标题)改为:文字和图形输出程序\n第五章… …,只改这2个就OK。
4.在资源Version(版本信息)中,修改ProductName为Longfly科技有限公司,FileDescription修改为文字和图形输出程序。
5.在资源Dialog中,进入IDD_ABOUTBOX,修改对话框标题为“关于”,将第一个静态文本改为“文字和图形输出程序1.0版”,将第二个静态文本修改为“Longfly Co.(C)2010”。
运行后如下图所示:(版本信息位于(菜单栏->帮助->关于))
MFC资源基础实例
(待续)

二、菜单栏及快捷键

1.在之前的MFC.EXE程序中继续进行修改,在资源Menu中,双击IDR_MAINFRAME进入菜单栏,进行如下图操作:(按循序)
①新增一个菜单项:
MFC资源基础实例
②在新增菜单项“操作”下新增2个菜单子项:
MFC资源基础实例
MFC资源基础实例
③在“改变颜色”弹出的子框中增加3个菜单子项:
MFC资源基础实例MFC资源基础实例MFC资源基础实例
①②③操作后的结果:
MFC资源基础实例
PS:菜单项目ID是有用的,快捷键是根据ID识别菜单项,而且菜单项响应函数也是根据ID识别,(&R)表示该菜单与键盘的’R’键有关,第一个“操作”菜单项不用加快捷键系统默认为Alt+O,并且括号一定要用英文格式括号不然快捷键不生效!!!
2.打开资源的Accelerator(快捷键)资源的IDR_MAINFRAME,新增4个快捷键操作,ID一定要与上图ID相同,操作方法:
MFC资源基础实例
MFC资源基础实例
还有3个红、绿、蓝的快捷键需要添加,方法同上.
3.在Dialog资源中新增一个Dialog对话框资源,ID为IDD_WORDOUT,设置如图,编辑框变量为CString类型,变量名为:m_edit
MFC资源基础实例
编辑完对话框后按Ctrl+W,弹出询问是否新增一个class,默认确认,进入新增对话框类画面:设置类名为:CWordDialog,其他默认,然后点确认,这时ClassView中会出现MFC资源基础实例
4.在View类头文件中,加入#include “WordDialog.h”如下图所示:MFC资源基础实例
并且在该类添加私有成员用于保存从对话框获取的字符串和菜单项响应函数设置的颜色。
MFC资源基础实例
5.按Ctrl+W->Message Maps->Class name:选中View->Object IDs:选中ID_OUT_WORD->Messages:选中COMMAND双击->确认->Edit Code->移动到响应代码处:

MFC资源基础实例

void CSource1View::OnOutWord() 
{
// TODO: Add your command handler code here
//打开文字输入对话框
CWordDialog wDlg;
int ret=wDlg.DoModal();
//单击确定按钮
if(ret==IDOK)
{
//改变输出文字
str=wDlg.m_edit;
InvalidateRect(NULL);//更新视图框内容,文字在View.OnDraw()函数实现
UpdateWindow();//更新窗口
}
}

另外还有3个颜色设置响应函数:ID分别为ID_WORD_RED,ID_WORD_GREEN,ID_WORD_BLUE
添加过程如上面一样

void CSource1View::OnWordRed() 
{
// TODO: Add your command handler code here
//改变字体颜色为红色
color=RGB(255,0,0);
InvalidateRect(NULL);
UpdateWindow();
}

void CSource1View::OnWordBlue()
{
// TODO: Add your command handler code here
color=RGB(0,0,255);
InvalidateRect(NULL);
UpdateWindow();
}

void CSource1View::OnWordGreen()
{
// TODO: Add your command handler code here
color=RGB(0,255,0);
InvalidateRect(NULL);
UpdateWindow();
}

在View类中OnDraw函数添加如下代码:实现以相应的颜色显示文字

void CSource1View::OnDraw(CDC* pDC)
{
CSource1Doc* pDoc = GetDocument();

ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
pDC->SetTextColor(color);//设置文字颜色为color
pDC->TextOut(100,100,str);//在(100,100)处输出文字,窗口客户区(0,0)为左上角(x,y)坐标.
}

我发现Alt+[字母]是通用快捷键,不过缺点就是要按部就班地一个一个按出来,即你想按出改变文字颜色为红,需要Alt+O,Alt+C,Alt+R再按一次Alt+R会下移,选定某个颜色后按回合才真正实现低级版”快捷键”,我第一次按快捷键的方法居然也是按Alt,无语,原来是Ctrl有点麻烦,设置一下就好了。。
(待续!)