你的位置:首页 > 操作系统

[操作系统]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可以获取需要类型。