MFC技术积累——基于MFC对话框类的那些事儿
1. 创建对话框类
(1)打开VC++6.0环境,点击:文件→新建;
(2)在弹出的新建对话框中选择:工程→MFC AppWizard (exe)→输入工程名称(例如:功能调试)→工程保存路径名→确定(其他勾选项一律默认);
(3)在弹出的MFC AppWizard- Step1对话框中选择:(你喜爱创建的应用程序类型?)点击基本对话框→(使用语言?)选择中文→点击下一个;
(4)在弹出的MFC AppWizard- Step2 of 4对话框中选择:这里基本保持默认选择,比较有用的一项是输入标题对话,在该编辑框中输入自己想要的标题(Function Debugging)→点击下一个;
(5)在弹出的MFC AppWizard- Step3 of 4对话框中选择:这里有用的一项是“使用MFC library选项”,对于创建生成的.exe程序在本PC机上运行的可以保持默认选项,如果要将该.exe移植到其他PC机运行时,可以勾选另一项(即静态连接)。当然如果已经按照默认选项建立了工程,一般情况下在Windows系统下是可以跨PC机运行,如果当程序不能运行并提示无法找到一些.dll文件时,此时只需将需要的.dll文件拷贝至.exe文件所在路径中即可。
(6)在弹出的MFC AppWizard- Step4 of 4对话框中选择:这里可以在一些编辑框中修改类名称,然后点击完成,本事例中类名称改为CFDlg、CFDApp。
(7)至此系统完成了对话框类的创建,点击编译→执行! 功能调试.exe按钮即可运行新创建的对话框程序,对话框标题名为Function Debugging
2. 修改对话框标题
2.1 修改主对话框标题
在BOOL CFDlg::OnInitDialog()函数中利用函数void SetWindowText( LPCTSTR lpszString );
左击对话框图标弹出下拉菜单,发现菜单第三项与标题名称不符合,修改方法如下:
2.2 修改关于对话框标题
当完成下拉菜单第三项名称修改后,点击关于“my title(&A)…”弹出关于对话框,如果想要修改关于对话框的标题,方法如下:
2.3 修改消息对话框标题
在程序运行中常常会用的AfxMessageBox函数来作为判断的消息对话框,对于用AfxMessageBox函数生成的消息对话框标题会默认采用应用程序名。因此修改由函数AfxMessageBox生成对话框的标题方法就是修改应用程序程序名。方法如下:
第一种方法:打开String Table→增加并编辑字符串资源AFX_IDS_APP_TITLE,如图:
第二种方法:打开MSDN查看CWinApp::m_pszAppName 主题,对该主题的Remarks翻译如下,CWinApp::m_pszAppName指定应用程序的名称。该应用程序名称来自于由CWinApp构造函数传递出去的参数,即为m_pszAppName指定名称,或者来自于字符串资源ID(AFX_IDS_APP_TITLE)。如果应用程序名称在字符串资源中没有指定,那么它将由程序.exe文件名来指定。m_pszAppName是CWinApp类中的公有变量,类型为const char*。因此,在默认建立的项目工程,我们如果既没有对字符串资源ID(AFX_IDS_APP_TITLE)进行编辑,又没有修改m_pszAppName,那么应用程序名称就默认采用.exe文件名。如何通过修改m_pszAppName来改变应用程序名称?方法正如MSDN示例所示:
//First free the string allocated by MFC at CWinApp startup.
//The string is allocated before InitInstance is called.
free((void*)m_pszAppName);
//Change the name of the application file.
//The CWinApp destructor will free the memory.
m_pszAppName=_tcsdup(_T(“my title”));
将上述源代码复制到CFDApp的构造函数中即可。
当然想要使用消息对话框除了全局函数AfxMessageBox之外,还可以使用类CWnd中的成员函数MessageBox,该函数的申明是:
int MessageBox( LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT nType = MB_OK );
lpszText:指向一个CString对象或者以’\0’结尾的字符串,该参数用来显示消息内容。
lpszCaption:指向一个CString对象或者以’\0’结尾的字符串,该参数用来显示消息对话框的标题。
nType:表示消息对话框的类型。具体想要什么类型通过查阅MSDN的CWnd::MessageBox主题,点击链接Message-Box Styles可以获取需要类型。
MFC技术积累——基于MFC对话框类的那些事儿的更多相关文章
- MFC技术积累——基于MFC对话框类的那些事儿5
4. 菜单 4.1 弹出菜单 本节主要讲解如何在主对话框的指定区域内通过鼠标右击来弹出一个菜单选项.最终效果图如图4.1. 如图4.1鼠标只能在指定区域(图中深色区域)内右击时弹出菜单,在指定区域外点 ...
- MFC技术积累——基于MFC对话框类的那些事儿2
3. 绘图 3.1 对话框资源编辑 首先通过添加控件的方式来创建一个简单的绘图对话框如图所示,创建步骤为: 第一.在VC++6.0软件环境的灰色空白区域右击,选中Controls,然后会弹出一个控件对 ...
- MFC技术积累——基于MFC对话框类的那些事儿3
3.3.2 创建图形画刷来实现位图加载 1.首先在Resource View中导入一幅位图,位图大小96×96像素: 2.其次在主对话框中添加一个静态文本资源,ID号是IDC_BITMAPAREA,添 ...
- MFC技术积累——基于MFC对话框类的那些事儿4
3.3.4 借助兼容DC加载DIB位图 创建一个与设备环境相兼容的DC,通过将位图暂时导入至兼容DC,然后利用CDC::BitBlt 或者CDC::StretchBlt函数将位图绘制到设备环境中. 示 ...
- MFC技术内幕系列之(四)---MFC消息映射与消息传递内幕
//////////////////////////////////////////////////////////////////////////////////// ...
- MFC编程入门之八(对话框:创建对话框类和添加控件变量)
创建好对话框资源后要做的就是生成对话框类了.生成对话框类主要包括新建对话框类.添加控件变量和控件的消息处理函数. 例程Addition是基于对话框的程序,所以程序自动创建了对话框模板IDD_ADDIT ...
- mfc 在VC的两个对话框类中传递参数的三种方法
弄了好久,今天终于把在VC中的对话框类之间传递参数的问题解决了,很开心,记录如下: 1. 我所建立的工程是一个基于MFC对话框的应用程序,一共有三个对话框,第一个对话框为主对话框,所对应的类为CTMD ...
- 【转】VS2010/MFC编程入门之八(对话框:创建对话框类和添加控件变量)
原文网址:http://www.jizhuomi.com/software/153.html 前两讲中鸡啄米为大家讲解了如何创建对话框资源.创建好对话框资源后要做的就是生成对话框类了.鸡啄米再声明下, ...
- VS2010/MFC对话框三:创建对话框类和添加控件变量
创建对话框类和添加控件变量 前两讲中讲解了如何创建对话框资源.创建好对话框资源后要做的就是生成对话框类了.生成对话框类主要包括新建对话框类.添加控件变量和控件的消息处理函数等. 例程Addition是 ...
随机推荐
- centos时区
执行:cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime是将shanghai时区设置为系统时区 执行:date +%s 获取的是系统的utc时间戳 ...
- 2.7 HBase架构深入剖析
一. 1.client 整个HBase集群的访问入口: 使用HBase RPC机制与HMaster和HRegionServer进行通信: 与HMaster进行通信进行管理类操作: 与HRegionSe ...
- 1107 Social Clusters (30 分)
When register on a social network, you are always asked to specify your hobbies in order to find som ...
- Linux之解决每次git pull/git push都需输入密码设置
操作命令: //执行这两条命令cd / git config --global credential.helper store 执行完命令之后会在.gitconfig文件中多加红色字体 [user] ...
- hexo新建md文档推送到blog出错
1. git错误提示 $ hexo g INFO Start processing FATAL Something's wrong. Maybe you can find the solution h ...
- 609. Find Duplicate File in System
Given a list of directory info including directory path, and all the files with contents in this dir ...
- 题解 P1162 【填涂颜色】
看到题目规模是n(1≤n≤30)即最大规模为30*30 本蒟蒻有个奇妙的想法!! 核心思路:搜索地图内除开被1包围着的0,并标注为1(即不填色) !!!那么,我们可以从每一个边界点开始去搜索 话不多说 ...
- 笔记-JavaWeb学习之旅8
Window对象-定时器方法 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- 解决“每次启动Access2010时都要求配置VS2008”的办法
我每次启动Access2010时都会要求配置VS2008,这大概是VS2008与office(Access2010)有冲突引起的.这里提供一种解决办法. 依次选择Access2010的文件-选项中-加 ...
- Unity Shader入门精要学习笔记 - 第4章 学习 Shader 所需的数学基础
摘录自 冯乐乐的<Unity Shader入门精要> 笛卡尔坐标系 1)二维笛卡尔坐标系 在游戏制作中,我们使用的数学绝大部分都是计算位置.距离.角度等变量.而这些计算大部分都是在笛卡尔坐 ...