cdialog

MFC程序设计小结

為{幸葍}努か 提交于 2020-12-12 17:29:27
由于毕业设计要用到MFC,因此本人这段时间开始学习MFC编程,边学边做,现将一些重要的知识点总结如下: 创建一个MFC程序,操作步骤很简单,要点就是选择MFC AppWizard(exe)、单文档或者多文档,然后点击完成。这样一个基本MFC框架代码就生成了。 用户通过使用资源编辑器来生成图形用户界面,VC++6.0可以处理的资源有Accelerator(快捷键)、Bitmap(位图)、Dialog(对话框)、Icon(图标)、Menu(菜单)、Toolbar(工具栏)、Version(版本信息)、String Table(字符串表)等。用户可以自主添加这些控件来制作图形界面。 MFC编程的核心思想是 消息映射、事件驱动。 消息一般指用户向应用程序传递的信息,例如用户单击鼠标左键,这就是一个消息。应用程序接受到消息后,就会做出相应的反应。这里的反应是通过 消息处理函数 实现的。在用户添加控件后,通过为其建立类向导,设置好相应的消息类型,添加消息处理函数。最后由用户来实现这些消息处理函数。关键字afx_msg来表明某函数为消息处理函数。 除了给控件建立相应的消息映射函数,我们还需要给控件建立相应的 变量,给控件添加建立类向导,选择成员变量一项, 确定变量名、变量类型 , 之后class wizard会自动添加相应的DDX函数,这是用来给指定对象 建立数据交换的环境 。 MFC是用c+

MFC界面开发:一篇文章解密如何使用BCG向对话框添加Visual Manager支持

旧巷老猫 提交于 2020-09-24 08:56:43
BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中,并为您节省数百个开发和调试时间。 BCGControlBar v30.5正式版下载 如果需要将当前选定的Visual Manager应用于现有对话框(表单视图或属性页),则必须在源代码中进行以下更改: 1. 更改父(基)类名称:您必须在.h和.cpp文件中进行以下替换: CDialog - CBCGPDialog. CPropertySheet - CBCGPPropertySheet. CPropertyPage - CBCGPPropertyPage. CFormView - CBCGPFormView. 2. 在对话框类的构造函数中调用EnableVisualManager(就属性表而言,仅在CBCGPPropertySheet派生的类构造函数中调用此方法就足够了:所有页面将自动主题化)。 3. 如果对话框上的某些控件已经与控件成员变量(例如CButton或CEdit)相关联,则必须用相应的库名称替换MFC的类名称。如果控件没有成员变量,它将自动设置主题。 4. 如果对话框包含列表框或组合框控件,则必须将其样式更改为owner-draw + “Has strings” ,并为这些控件添加CBCGPListBox / CBCGPComboBox变量

QT中的模态对话框及非模态对话框

℡╲_俬逩灬. 提交于 2020-08-20 08:40:25
模态 对话框(Modal Dialog)与 非模态 对话框(Modeless Dialog)的概念不是 Qt 所独有的,在各种不同的平台下都存在。又有叫法是称为模式对话框,无模式对话框等。所谓 模态 对话框就是在其没有被关闭之前,用户不能与同一个应用程序的其他窗口进行交互,直到该对话框关闭。对于 非模态 对话框,当被打开时,用户既可选择和该对话框进行交互,也可以选择同应用程序的其他窗口交互。 在 Qt 中,显示一个对话框一般有两种方式,一种是使用exec()方法,它总是以 模态 来显示对话框;另一种是使用show()方法,它使得对话框既可以 模态 显示,也可以 非模态 显示,决定它是 模态 还是 非模态 的是对话框的modal属性。 在 Qt 中, Qt 的 模态 与 非模态 对话框选择是通过其属性modal来确定的。我们来看看modal属性,其定义如下: modal : bool默认情况下,对话框的该属性值是false,这时通过show()方法显示的对话框就是 非模态 的。而如果将该属性值设置为true,就设置成了模态对话框,其作用于把QWidget::windowModality属性设置为 Qt ::ApplicationModal。 而使用exec()方法显示对话框的话,将忽略modal属性值的设置并把对话框设置为 模态 对话框。 一般使用setModal(

MFC图形编辑界面工具

房东的猫 提交于 2020-08-15 16:50:41
//2020年6月17 更新 这篇博客最近好像挺火?不少师弟师妹咨询我MFC的内容,额,博主很久也没有用MFC搞事情了,现在甚至都没有开发环境,加上到期末了,事情很多,实在没有精力回顾帮大家解决问题,今年这种情况特殊,我也很能理解18级的师弟师妹们,教授实训课的应该还是张帆老师吧,很好的老师,可以多向他请教,B站好像也有相关的教程,方法总比困难多,加油! 一、背景 喔,五天的实训终于结束了,学校安排的这次实训课名称叫高级程序设计实训,但在我看来,主要是学习了Visual C++ .NET所提供的MFC(Microsoft Foundation Class)库所提供的类及其功能函数的使用。写这一篇博客的目的是针对实训中出现的问题做一些说明,方便以后查看,并且对这次实训做一些总结。这一次的实训对我来说其实挺难受的,真正用来学习使用VS和MFC的时间只有三天,加上下个周是考试周,还有几门课没有复习完,这几天基本上是连轴转,中午也泡在实验室里,唉啊还是自己太菜了。最后我们需要提交一个课程设计程序,因为时间的原因,我选择了最简单的图形界面编辑工具,这个程序其实在C++的课程设计上就有这个,但当时我还不会windows图形界面的编程,现在想想这两个课程设计其实完全可以是一份(捂脸)。 最后做出来的界面是这样的: 在功能上: 能够在 windows 的界面下画图,能够画直线、空心矩形、、圆角矩形

C++变量命名规则

半世苍凉 提交于 2020-08-14 03:46:43
转自:http://www.cnblogs.com/finallyliuyu/archive/2010/09/25/1834301.html 浅谈C++变量命名规则 不知道别的公司如何,反正我现在的公司对变量命名并没有一定的规范,唯一要求就是能简单易懂,但是,我想,这个多个程序员,大概每个人都有自己习惯的一套 命名规则吧,不过,要是并不通用的话,大概看别人的程序会很头疼吧,SO 为了别人看偶的程序不至于太头疼,偶决定找个通俗的命名法来参考下,于是,搜到了匈牙利命名法。。。 匈牙利命名法的来历和介绍分类:C Plus Plus 匈牙利命名法是一种编程时的命名规范。基本原则是:变量名=属性+类型+对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部 分。命名要基于容易记忆容易理解的原则。保证名字的连贯性是非常重要的。 举例来说,表单的名称为form,那么在匈牙利命名法中可以简写为frm,则当表单变量名称为Switchboard时,变量全称应该为 frmSwitchboard。这样可以很容易从变量名看出Switchboard是一个表单,同样,如果此变量类型为标签,那么就应命名成 lblSwitchboard。可以看出,匈牙利命名法非常便于记忆,而且使变量名非常清晰易懂,这样,增强了代码的可读性,方便各程序员之间相互交流代 码。

MFC经验

半世苍凉 提交于 2020-08-12 00:00:27
MFC框架各部分指针获取方式: 记住,是获取 指针 MFC消息流程图: string CString char* 的互相转换: string 转 CString   CString.Format("%s", string.c_str()); //用c_str()比data()好    char 转 CString   CString.Format("%s", char*); // 可以直接给CString赋值 ,不要用Format      char* 转 string   string s(char *);        CString 转 string   string s(CString.GetBuffer()); //测试显示 可以直接用CString 赋给string , //因CString 有operator LPCTSTR 不拷贝 只返回指针   string 转 char *   char *p = string.c_str(); CString 转char * CString.GetBuffer(); 可直接赋值,不用转换,因为LPCTSTR在CString中被重载了. 一条重要经验: 如果我们的类/结构体中有CArray(或CList等其他的派生自CObject类,即很多的控件类)的成员变量,我们最好添加上一个public类型的operator=运算赋重载函数

Command-line dialog tool for Windows

喜你入骨 提交于 2020-01-24 03:13:06
问题 I need a dialog tool similar to cdialog (or whiptail), but one that will work on Windows. I have MinGW and compiling something from source is no problem, but both cdialog and whiptail, the only ones that I know of, contain code that is UNIX-specific, and so they will not compile on Windows. Are there any alternatives that I can use? I'd rather not have to figure out and replace the platform-specific code myself. 回答1: I remember the E Text Editor using wxCocoaDialog for that purpose:

Dividing a CDialog in two areas with different backgrounds (picture of the objective inside)

本秂侑毒 提交于 2020-01-06 05:01:06
问题 I need to build a window designed to look exactly like this (it has controls inside the white area, but that's not relevant for now): http://dl.dropbox.com/u/3432167/example.png My problem is defining those two separate "areas" with different backgrounds. The closest I've got to the expected look was representing the white area with an empty ListBox, but the result is not the same (and it is a lousy hack). Any ideas on how achieve this? 回答1: If the dialog does not need to be resizable, the

Convert a modeless dialog to modal at runtime

半世苍凉 提交于 2019-12-22 04:05:57
问题 I have a dialog (CDialog derived class) that can be used in two different ways (edition mode and programming mode). When the dialog is open to be used in programming mode it is a modeless dialog that it is used for modifying the main view (kind of a toolbar). When it is open in edition mode the user can change the configuration of the dialog itself and in this case it is a modal dialog. Right now they are two different dialogs with few differences and I would like to have just want dialog and

Enter key does not trigger IDOK Default Push Button action

匆匆过客 提交于 2019-12-20 04:57:07
问题 I have a CDialog derived class. Its interface definition has several picture boxes and some buttons after, defined in resource file as: IDD_SELECT_ITEMS DIALOGEX 0, 0, 462, 274 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Select" FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN CONTROL "",IDC_ITEM1,"Static",SS_BLACKFRAME,13,18,59,52 //... CONTROL "",IDC_ITEM18,"Static",SS_BLACKFRAME,373,178,59,52 LTEXT "Select",IDC_STATIC,7,256,40,8 PUSHBUTTON "All",IDC