我a对话筐类中定义一个变量x,如Cstring类型,如何在b对话框中使用它?

Akagg 2003-08-20 10:16:40
我a对话筐类中定义一个变量x,如Cstring类型,如何在b对话框中使用它?
...全文
36 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Akagg 2003-08-20
  • 打赏
  • 举报
回复
噢!看我,连这都忘了^_^
谢了!
daphant 2003-08-20
  • 打赏
  • 举报
回复
楼上的漏了一个字母是
a aa
aa.x
vc_love 2003-08-20
  • 打赏
  • 举报
回复
a aa;
a.x //使用
No.4 简单的MFC多对话演示程序 “MultiDialog” 演示如何在工程拥有多个对话,及如何在一个对话调用另一个对话。 重点:1、多个对话类的建立;2、对话的模式(Modal)调用方法;3、Spin控件的使用。 新建一个基于对话的MFC工程, 通过菜单"Insert>>Resource"打开添加资源对话, 在其选择Dialog后点击New创建一个新的对话 按Ctrl+W打开ClassWizard,系统会提示刚才创建了一个新的对话资源,是否建立对应的类, 选择建立,然后在New Class窗口Class Name栏输入它的名称:CSubClass1, 确定后系统会自动生成SubClass1.h和SubClass1.cpp并加入工程,其有已经创建好的CSubClass1的类的基本代码。 把这个对话的Caption属性改为“难度选择”,在它上面画三个Radio“简单”、“标准”、“困难”, 并建立相关联的变量m_Option1。(要注意的是在ClassWizard注意Class Name应该选CSubClass1而不是之前的主对话类) 按照相同方法建立第二个新对话,类名“CSubClass2”,Caption为“关卡选择”。 在上面画一个Edit和一个Spin,注意先画Edit后画Spin,将Spin的Auto buddy和Set buddy integer勾上。 按Ctrl+W打开ClassWizard,为Edit建立关联变量,不过注意是int型而不是CString型, 也为Spin建立关联变量m_Spin1,注意这次是Control型变量CSpinButtonCtrl。 下面为这两个对话添加代码。 双击“难度选择”对话的OK按钮,建立对话的OnOK映射。 在其加入(在CDialog::OnOK();之前): UpdateData(TRUE); if ((m_Option1>2) ||(m_Option1<0)) { MessageBox("错误的选择!","提示",MB_OK); return; } 下面对“关卡选择”对话添加初始化代码, 由于关卡的有效值只有1到6,因此需要在初始化时设置Spin控件的有效值范围。 按Ctrl+W打开ClassWizard,在左侧列表选择这个对话类CSubDialog2, 在右侧列表选择WM_INITDIALOG,点击右边的“Add Function...”按钮, 接着点击右边的“Edit Code”按钮,在其加入(在CDialog::OnInitDialog()那句之后,在return TRUE那句之前): m_Spin1.SetRange(1,6); m_Text1=1; m_Spin1.SetPos(1); 其CSpinButtonCtrl::SetRange()函数的作用是设置和他关联的Spin控件的范围,两个参数分别是下界和上界。 而CSpinButtonCtrl::SetPos()是设定Spin的当前位置。 两个新的对话都已建立完毕,下来是如何在主对话使用的问题。 首先,两个新对话都有各自的类,分别在SubDialog1.h和SubDialog2.h有定义。(类的细节则在对应的cpp定义) 因此,主对话想要调用这两个新对话,需要先包含这两个头文件, 在你要使用的地方(本例是MultiDialogDlg.cpp)文件前面加上 #include "SubDialog1.h" #include "SubDialog2.h" 然后在想要调用的地方就可以使用了。 本例,首先为主窗口的两个Edit建立CString型关联变量m_Text1和m_Text2, 然后在两个按钮的消息映射函数分别加入: CSubDialog1 dialog1; //定义CSubDialog1型对话的一个新对象 dialog1.DoModal(); //使用“模式”调用,显示对话 m_Text1.Format("%d",dialog1.m_Option1); //此句在上面对话没有关闭前不会执行到 UpdateData(FALSE); 和 CSubDialog2 dialog1; dialog1.DoModal(); m_Text2.Format("%d",dialog1.m_Text1); UpdateData(FALSE); 其第一句均为定义对话新实例的语句,定义一个你想要的类型对话。 第二句是通过调用CDialog::DoModal()方法,来显示这个对话,并进入“模式”(Modal)状态 在“模式”状态,当子对话没有关闭之前,调用它的父对话不能被响应, 并且其语句执行会停留在刚才的DoModal语句上等待,直到子对话关闭才接着执行下一个语句。 第三第四句将子对话得到的数据(即类的成员变量)显示在父对话的Edit上。 四句执行完后退出该函数,这时刚才定义的CSubDialog1等对话变量被销毁,因此创建的话框也被销毁。
相关网站 7 设置窗口最大最小 7 设置窗口标题 7 去掉主菜单 7 修改应用程序图标 7 系统只能允许一个程序运行 7 在状态栏添加时间 8 研究调用存储过程 8 得到本机的IP地址 9 vc调用chm文件 10 最高窗口的实现 10 防止Edit框的Password不保密 11 在同一系统显示GB字符和BIG5字符 12 改变颜色(整个窗体的控件) 13 改变工程表头栏 13 ◆如何找开一个DiaLog的窗口◆ 13 ◆得到系统设置的窗口颜色◆ 14 ◆如何让点下去的菜单成为V状态◆ 14 ◆如何调用WINDOWS的颜色板◆ 14 ◆如何产生一个MDI的主窗口◆ 15 ◆如何让一个文本控件显示出值◆ 15 ◆如何让一个控件显示出相应的值◆ 16 ◆在调试怎么样MESSAGEBOX一个数字◆ 16 ◆如何控制控件的焦点◆ 16 ◆如何对析构函数对象进行释放◆ 16 ◆如何关闭一个模态窗口◆ 17 ◆如何将一个提示的声音发到声卡上◆ 17 ◆如何得到打开exe的带的参数◆ 17 ◆如何在框架上建立一个工具条◆ 17 ◆如何生成一个主窗口下方的状态条◆ 18 ◆如何让Cscrollview类控制其可以流动区域大小◆ 19 ◆MFC控件的一些基本控制方法◆ 19 ◆如何让一个数字型变量化为字符型变量◆ 19 ◆如何使用“拉动条”,“上下选择”◆ 19 ◆如何使用postmessage来异步触发某事件◆ 21 ◆如何使用Sendmessage来异步触发某事件◆ 22 ◆如何修改父类的相关控件属性◆ 22 ◆如何在程序得到控件的名◆ 22 ◆如何控制菜单的事件程序◆ 22 ◆如何使用控件的数据录入的控制属性◆ 23 ◆哪些函数是文档、视图相互处理用的◆ 23 ◆如何建立一个基于对话一程序◆ 23 ◆如何建立一个线程◆ 24 ◆如何让窗口产生一个图标(从应用程序资源取出)◆ 24 ◆如何得到一个edit的录入的值◆ 24 ◆如何启动TIMER事件◆ 25 ◆如何使用ctrllist控件实现表格◆ 25 ◆如何从INI文件得到值◆ 25 ◆如何将图标文件写到窗口◆ 26 ◆如何得到本机的IP地址◆ 26 ◆如何使用全局变量◆ 26 ◆如何让一个字符加上回车、换行◆ 26 ◆如何定义、使用结构◆ 26 ◆如何在任意程序显示MessageBox◆ 27 ◆如何在程序判断出debug状态◆ 27 ◆当对话有一个滚动条是,当滚动滚动条时的消息控制函数◆ 27 ◆将一个CWnd指针转换成一个控件ID(整数)注意用GetDlgItem()函数是从一个控件ID转换成一个CWnd的指针◆ 28 ◆如果在对话定义一个消息的方法,假设对话名为CXX◆ 28 ◆消息传递◆ 29 ◆在一个函数引用另外的一个对话◆ 29 ◆全局函数的申明问题◆ 29 ◆在应用程序*APP.CPP的InitInstance()的事件◆ 29 ◆给执行文件加一个图标◆ 30 ◆如何在全局函数通过传入的窗口句柄操作窗口◆ 30 ◆如何使桌面文字背景透明?◆ 30 ◆怎样才能在VC里产生一个唯一的字符串◆ 31 ◆如何隐藏进程(在系统状态栏和进程列表里不可见)◆ 31 ◆如何得到一个确定大小的视?◆ 31 ◆如何实现点击窗口任意地方拖动窗口?◆ 32 ◆如何在启动时阻止MDI应用程序创建一个新文档?◆ 33 ◆如何在多文档MFC程序制作独立的File|New菜单?◆ 33 ◆如何检测视是否处于分割状态?◆ 34 ◆如何使程序保持极小状态?◆ 34 ◆如何确定当前进程实例是否为唯一实例?◆ 35 ◆如何向一个文档附加多个视?◆ 35 ◆如何获得文件的图标、属性、大小、类型等参数?◆ 36 ◆如何得到鼠标下面的窗口?◆ 37 ◆设置鼠标的形状◆ 38 ◆在对话设置编辑EDIT的值◆ 38 1. 如何获取应用程序的实例句柄? 38 2. 如何通过代码获得应用程序主窗口的指针? 38 3. 如何在程序获得其他程序的图标? 38 4. 如何编程结束应用程序?如何编程控制windows的重新引导? 39 5.怎样加载其他的应用程序? 39 6. 确定应用程序的路径 39 7. 获得各种目录信息 40 8. 如何自定义消息 40 9. 如何改变窗口的图标? 40 10. 如何改变窗口的 缺省风格? 40 11. 如何将窗口居显示? 41 12. 如何让窗口和 MDI窗口一启动就最大化和最小化? 41 13. 如何使程序保持极小状态? 41 14. 如何限制窗口的 大小? 41 15. 如何使窗口不可见? 41 16. 如何使窗口始终在最前方? 41 17、如何创建一个字回绕的CEditView 42 18、通用控件的显示窗口 42 19、移动窗口 42 20、重置窗口的大小 42 21、如何单击除了窗口标题栏以外的区域使窗口移动 43 22、如何改变视窗的背景颜色 43 23、如何改变窗口标题 44 24、如何防止主框窗口在其说明显示活动的文档名 44 25、如何获取有关窗口正在处理的当前消息的信息 45 26、如何创建一个不规则形状的窗口 45 27、如何在代码获取工具条和状态条的指针 47 28、如何使能和禁止工具条的工具提示 47 29、如何设置工具条标题 48 30、如何创建和使用无模式对话 48 31、如何在对话显示一个位图 49 32、如何改变对话或窗体视窗的背景颜色 49 33、如何获取一个对话控件的指针 50 34、如何禁止和使能控件 50 35、如何改变控件的字体 50 36、如何在OLE控件使用OLE_COLOR数据类型 51 37、在不使用通用文件打开对话的情况下如何显示一个文件列表 51 38、为什么旋转按钮控件看起来倒转 51 39为什么旋转按钮控件不能自动地更新它下面的编辑控件 52 40、如何用位图显示下压按钮 52 41、如何一个创建三态下压按钮 52 42、如何动态创建控件 52 43、如何限制编辑框的准许字符 53 44、如何改变控件的颜色 54 45、当向列表框添加多个项时如何防止闪烁 55 46、如何向编辑控件添加文本 55 47、如何访问预定义的GDI对象 55 48、如何获取GDI对象的属性信息 56 49、如何实现一个橡皮区矩形 56 50、如何更新翻转背景颜色的文本 58 51、如何创建一个具有特定点大小的字体 58 52、如何计算一个串的大小 59 53、如何显示旋转文本 59 54、如何正确显示包含标签字符的串 60 55、串太长时如何在其末尾显示一个省略号 60 56、如何快速地格式化一个CString对象 61 57、为什么即使调用EnableMenuItem菜单项后,菜单项还处于禁止状态 61 58、如何给系统菜单添加一个菜单项 61 59、如何确定顶层菜单所占据的菜单行数 62 60、在用户环境如何确定系统显示元素的颜色 62 问:如何控制窗口框架的最大最小尺寸? 63 问:如何改变窗口框架的颜色? 63 问:如何将应用程序窗口置于屏幕正? 64 问:VC6.0对VC5.0的兼容性? 64 问:打印和打印机的问题? 64 问:CRichEditCtrl滚动条的问题? 65 问:从数据库读大于32k的内容? 65 问:如何获得CRichEditCtrl字符的位置? 66 问:如何限制mdi子框架最大化时的大小? 66 问:如何切换视口而不破坏它们? 66 问:改变列表控制时发生闪烁现象? 68 问:处理列表控件可见项的问题? 68 问:产生线程的问题? 68 问:CFile使用了缓冲区吗? 69 问:DAO的密码? 69 问:如何知道CListBox什么时候滚动了? 70 问:视口的不活动性如何处理? 70 问:如何使用COleClientItem的IDispatch接口? 70 问:关于用户自定义的消息使用? 71 问:在打开一个文档时退出? 71 问:在CListCtrl控件多选择项的删除? 71 问:工作线程的登录状态? 72 问:如何控制菜单的大小? 72 问:改变LVIS_SELECTED的状态颜色? 73 问:如何只存储文档的某一部分? 73 问:保存工具条菜单有bug吗? 73 问:Tip of the day的bug 73 问:如何让我的mfc应用程序可以在最上面? 74 问:如何增加视图ActiveX控件的事件处理函数? 75 问:如何创建一个动态的Tree控件? 75 问:SDI程序开始时不打开文档? 75 问:List控件整栏选择? 75 问:如何重载MRU文件? 76 问:CImageList控件图象橙色被显示为黄色? 76 问:无法正确改变应用程序的图标? 78 问:工具条状态的问题? 78 问:在SDI应用程序使用Active控件? 79 问:有RichEdit控件的对话无法正常显示? 79 问:DLL的模板成员函数? 79 问:CFormView的上下文帮助? 80 问:CArchive类的WriteObject函数问题? 80 问:RegisterWindowMessage的BroadcastSystemMessage如何处理? 80 问:CListCtrl选择变化时如何获得通知? 81 问:如何向ATL-COM对象传送一个数组? 81 问:如何选择CTreeCtrl的节点文本进行编辑? 82 问:如何改变默认的光标形状? 82 问:如何用键盘滚动分割的视口? 83 问:如何在线程处理状态条? 83 问:如何阻止WINDOWS关闭? 83 问:如何使一个按钮Disable? 83 问:怎样从MFC扩展动态链结库(DLL)显示一个对话? 84 问:想隐藏用户界面怎么办? 85 问:如何实现SDI与MDI的转换? 85 问:CDC的竖排文本? 86 问:如何激活变灰的弹出菜单? 86 问:线程消息? 87 问:TreeCtrl控制的显示速度太慢? 87 怎样使窗口总是浮现在最上面? 88 改变拖放时的光标外形? 89 如何定位到最新的记录上? 90 MVC和Doc-View? 90 被禁止(Disable)的控件如何改变其文本或背景色? 90 有ODBC的查找函数吗? 91 多个MRU菜单的问题 91 校验框类问题 93 CFormView类的Fold按钮 94 视的背景色 94 隐藏控件台程序 94 修改SDI窗口标题 95 焦点问题 95 从一个OCX调用另一个OCX的方法。 95 得到视 96 字符转化时间 96 二进制还是文本方式? 99 发送消息 99 怎样知道菜单运行时的状态 99 DLL编译出错 100 通用控件的显示窗口 100 如何禁止和使能控件 100 如何在OLE控件使用OLE_COLOR数据类型 100 在不使用通用文件打开对话的情况下如何显示一个文件列表 100 为什么旋转按钮控件看起来倒转 101 为什么旋转按钮控件不能自动地更新它下面的编辑控件 101 如何动态创建控件 101 如何显示旋转文本 101 在TreeList使用Edit功能 102 TreeList control使用check box 103 有关属性对话(property sheet )的几个提示 108 在MFC加入"这是什么?"的帮助提示 111 精通工具条 112 如何改变视窗的背景颜色 112 为MFC应用程序添加全屏幕显示功能 112 VC常用数据类型使用转换详解 114 用Visual C++操作INI文件 117 单文档加入背景图 119 更新窗体方法 120 更改窗口控件的能动和不能动(以按钮控件为例) 120 窗口响应键盘事件 120 密码框输入受保护 121 最高窗口的实现 122 实现窗口动态写入汉字和改变汉字颜色形状 123
相关网站 7 设置窗口最大最小 7 设置窗口标题 7 去掉主菜单 7 修改应用程序图标 7 系统只能允许一个程序运行 7 在状态栏添加时间 8 研究调用存储过程 8 得到本机的IP地址 9 vc调用chm文件 10 最高窗口的实现 10 防止Edit框的Password不保密 11 在同一系统显示GB字符和BIG5字符 12 改变颜色(整个窗体的控件) 13 改变工程表头栏 13 ◆如何找开一个DiaLog的窗口◆ 13 ◆得到系统设置的窗口颜色◆ 14 ◆如何让点下去的菜单成为V状态◆ 14 ◆如何调用WINDOWS的颜色板◆ 14 ◆如何产生一个MDI的主窗口◆ 15 ◆如何让一个文本控件显示出值◆ 15 ◆如何让一个控件显示出相应的值◆ 16 ◆在调试怎么样MESSAGEBOX一个数字◆ 16 ◆如何控制控件的焦点◆ 16 ◆如何对析构函数对象进行释放◆ 16 ◆如何关闭一个模态窗口◆ 17 ◆如何将一个提示的声音发到声卡上◆ 17 ◆如何得到打开exe的带的参数◆ 17 ◆如何在框架上建立一个工具条◆ 17 ◆如何生成一个主窗口下方的状态条◆ 18 ◆如何让Cscrollview类控制其可以流动区域大小◆ 19 ◆MFC控件的一些基本控制方法◆ 19 ◆如何让一个数字型变量化为字符型变量◆ 19 ◆如何使用“拉动条”,“上下选择”◆ 19 ◆如何使用postmessage来异步触发某事件◆ 21 ◆如何使用Sendmessage来异步触发某事件◆ 22 ◆如何修改父类的相关控件属性◆ 22 ◆如何在程序得到控件的名◆ 22 ◆如何控制菜单的事件程序◆ 22 ◆如何使用控件的数据录入的控制属性◆ 23 ◆哪些函数是文档、视图相互处理用的◆ 23 ◆如何建立一个基于对话一程序◆ 23 ◆如何建立一个线程◆ 24 ◆如何让窗口产生一个图标(从应用程序资源取出)◆ 24 ◆如何得到一个edit的录入的值◆ 24 ◆如何启动TIMER事件◆ 25 ◆如何使用ctrllist控件实现表格◆ 25 ◆如何从INI文件得到值◆ 25 ◆如何将图标文件写到窗口◆ 26 ◆如何得到本机的IP地址◆ 26 ◆如何使用全局变量◆ 26 ◆如何让一个字符加上回车、换行◆ 26 ◆如何定义、使用结构◆ 26 ◆如何在任意程序显示MessageBox◆ 27 ◆如何在程序判断出debug状态◆ 27 ◆当对话有一个滚动条是,当滚动滚动条时的消息控制函数◆ 27 ◆将一个CWnd指针转换成一个控件ID(整数)注意用GetDlgItem()函数是从一个控件ID转换成一个CWnd的指针◆ 28 ◆如果在对话定义一个消息的方法,假设对话名为CXX◆ 28 ◆消息传递◆ 29 ◆在一个函数引用另外的一个对话◆ 29 ◆全局函数的申明问题◆ 29 ◆在应用程序*APP.CPP的InitInstance()的事件◆ 29 ◆给执行文件加一个图标◆ 30 ◆如何在全局函数通过传入的窗口句柄操作窗口◆ 30 ◆如何使桌面文字背景透明?◆ 30 ◆怎样才能在VC里产生一个唯一的字符串◆ 31 ◆如何隐藏进程(在系统状态栏和进程列表里不可见)◆ 31 ◆如何得到一个确定大小的视?◆ 31 ◆如何实现点击窗口任意地方拖动窗口?◆ 32 ◆如何在启动时阻止MDI应用程序创建一个新文档?◆ 33 ◆如何在多文档MFC程序制作独立的File|New菜单?◆ 33 ◆如何检测视是否处于分割状态?◆ 34 ◆如何使程序保持极小状态?◆ 34 ◆如何确定当前进程实例是否为唯一实例?◆ 35 ◆如何向一个文档附加多个视?◆ 35 ◆如何获得文件的图标、属性、大小、类型等参数?◆ 36 ◆如何得到鼠标下面的窗口?◆ 37 ◆设置鼠标的形状◆ 38 ◆在对话设置编辑EDIT的值◆ 38 1. 如何获取应用程序的实例句柄? 38 2. 如何通过代码获得应用程序主窗口的指针? 38 3. 如何在程序获得其他程序的图标? 38 4. 如何编程结束应用程序?如何编程控制windows的重新引导? 39 5.怎样加载其他的应用程序? 39 6. 确定应用程序的路径 39 7. 获得各种目录信息 40 8. 如何自定义消息 40 9. 如何改变窗口的图标? 40 10. 如何改变窗口的 缺省风格? 40 11. 如何将窗口居显示? 41 12. 如何让窗口和 MDI窗口一启动就最大化和最小化? 41 13. 如何使程序保持极小状态? 41 14. 如何限制窗口的 大小? 41 15. 如何使窗口不可见? 41 16. 如何使窗口始终在最前方? 41 17、如何创建一个字回绕的CEditView 42 18、通用控件的显示窗口 42 19、移动
第一课: Windows程序运行原理及程序编写流程,窗口产生过程,句柄原理,消息队列,回调函数,窗口关闭与应用程序退出的工作关系,使用VC++的若干小技巧,stdcall与cdecl调用规范的比较,初学者常犯错误及注意事项。我们通常不必要知晓每一个函数和消息。但另一方面,也不得不记住其的一部分,否则很难将VC++运用自如。到底该记住哪些,这在我们的课程都会涉及到。 第二课: C++经典语法与应用,类的编写与应用,构造与析构函数,函数的重载,类的继承,函数覆盖,基类与派生类的构造函数、析构函数先后调用顺序,如何在派生类构造函数向基类的构造函数传递参数,this成员变量类型转换的内幕,虚拟函数与奇妙多态性。VC工程的编译原理与过程,将工程不同的类拆分到不同的原文件,每一个类由一个.h和.cpp文件共同完成,然后解决头文件重复定义问题,培养了学员良好的编程习惯,也为以后分析MFC Appwizard生成的工程奠定了良好基础。 第三课: 讲述MFC AppWizard的原理与MFC程序框架的剖析。AppWizard是一个原代码生成工具,是计算机辅助程序设计软件,Winmain在MFC程序是如何从源程序被隐藏的,theApp全局变量是如何被分配的,MFC框架的几个类的作用与相互关系,MFC框架窗口是如何产生和销毁的,对窗口类的PreCreateWidow和OnCreate两个函数的着重分析,Windows窗口与C++的CWnd类的关系。 第四课: 讲述如何运用ClassWizard及对MFC消息响应函数机制的分析,理解发送给窗口的消息是如何被MFC框架通过窗口句柄映射表和消息映射表来用窗口类的函数进行响应的。掌握设备描述表及其封装类CDC的使用,CDC是如何与具体的设备发生关联的,融合具体的画图程序进行分析。如何设置封闭图形的填充刷子(位图画刷与透明画刷的使用)。 第五课: 掌握CDC的文字处理程序的编写,如何产生自定义字体和自定义插入符,熟悉对CString类的使用。通过对kala ok程序的编写,讲解定时器的使用和DrawText函数的巧妙运用。讲解如何使用CDC的裁减功能。 第六课: 菜单的工作原理及编写应用,菜单命令消息在MFC框架程序的几个类的传递顺序和处理过程。标记菜单的实现原理、图形菜单的实现及常犯错误的分析,GetSystemMetrics的应用,快捷弹出菜单的实现方式及其命令响应函数有效范围(与弹出菜单时所指定的父窗口有密切的关系,最底层的子窗口具有最优先的处理机会)。 第七课.: 动态菜单的编写,如何让程序在运行时产生新的菜单项及如何手工为这些新产生的菜单命令安排处理函数,如何在顶层窗口截获对菜单命令的处理,更进一步掌握CString类的应用。 第八课.: 对话用户界面程序的编写,如何向对话控件联接数据成员及其实现机理,如何向对话控关联控件类,如何利用对话类的成员函数向控件发送消息和获取对话控件的类指针,如何直接利用对话控件类操纵对话控件(发送消息和直接调用成员函数)。如何在程序运行时产生和销毁控件。对话控件的几种操作方式的优劣比较分析。 第九课: 如何让对话上的文本框在程序启动后立即获得焦点,如何利用SetWindowLong改变窗口的回调函数,通过改变文本框的默认回车处理方式进行演示。实现多个输入文本框间通过回车逐一向下传递焦点的另一种巧妙方法(用缺省按钮来处理)。利用SetWindowLong和定时器轮回改变窗口的图标。如何实现对话的部分收缩和展开。如何在主对话程序启动时立即隐藏对话的巧妙实现方式与精妙思想(不能直接在OnInitDialog处理。包括自定义消息的实现) 第十课: 如何制作属性页对话和向导对话,融合讲解组合框(如何调整组合框的大小)、列表框、单选按钮、复选按钮 等常用对话控件的多种使用方法。如何限制用户在不满足设定的条件时切换到其他属性页和向导页。 第十一课: 如何修改MFC AppWizard向导生成的框架程序的外观,包括修改标题栏的多种方式及原理,修改图标、光标、背景的两种方法。如何给应用程序增加工具栏和删除工具栏按钮。定制状态栏,在CView获取状态栏对象的几种方式,在状态栏添加时钟显示(掌握CTime类和静态成员变量和函数的用法),鼠标坐标显示,进度条(主窗口产生后立即产生进度条的巧妙思想,不能在OnCreate函数直接处理,要用到自定义消息的方法)。如何为窗口添加背景位图。 第十二课: 如何使用自定义画笔(颜色,线宽,线形),画刷(形状,颜色)。如何为程序添加选项菜单和选项设置对话,如何使用标准颜色对话,窗口重绘原理,在选项对话实现预览功能。实现选项对话和窗口类的数据交换。 第十三课: 如何让CDC上输出的文字、图形具有保持功能,元文件设备描述表的使用,CpaintDC与CClientDC的区别与应用,OnPaint与Ondraw在CView的关系及实现内幕,集合类CObArray的使用,滚动窗口的实现,设备坐标与逻辑坐标的转换。 第十四课: 文件读写,CFileDialog,CFile,fstream,CArchive类的使用与比较。在应用讲解const char *与char * const的区别,字符串的使用原理,如何使用CString的内存缓冲区。注册表与win.ini文件的读写方式及相关知识点。 第十五课: 如何利用CDocument类的串行化存储功能及MFC框架程序提供的文件打开与保存功能的实现原理。如何实现类对串行化的支持,CObArray的串行化实现内幕。MFC框架程序的几个主要类之间如何获得相互的指针引用。 第十六课: 网络程序的编写,Socket是连接应用程序与网络驱动程序的桥梁,Socket在应用程序创建,通过bind与驱动程序建立关系。此后,应用程序送给Socket的数据,由Socket交给驱动程序向网络上发送出去。计算机从网络上收到与该Socket绑定的IP+Port相关的数据后,由驱动程序交给Socket,应用程序便可从该Socket提取接收到的数据。网络应用程序就是这样通过socket进行数据的发送与接收的。UDP与TCP的工作原理与编写过程,包含如何在程序连接库文件,telnet工具软件在编写网络程序的用途 第十七课: 多线程程序的编写,如何通过互斥来保证多线程的安全。如何利用命名互斥保证只有一份程序实例被运行,结合多线程,网络编程,自定义消息,数据类型转换,如何改变文本框对回车的默认处理方式等技术编写网络聊天程序。 第十八课: 动态连接库程序的编写,库函数的两种输出方式。调用程序对动态连接库的静态连接与动态连接方式,如何利用工具查看动态连接库里的函数,C/C++连接规范的命名转变问题分析,如何获得动态连接库里的函数 的指针,如何用typedef声明指向函数的指针类型。如何调试动态连接库。 第十九课: ActiveX控件的应用与工作原理,ActiveX控件的编写,如何为控件安排属性,方法,事件,属性页,持久性存储。如何注册控件与取消控件注册。如何测试与调试控件。 第二十课: 综合答疑与一些高深主题的介绍,包括如何安装系统钩子函数,dll连接库里的全局变量数据共享问题分析,ADO数据库编程,如何将数据库记录显示在Clistview网格。 以上内容为作者对课件的初步整理,还有很多课堂上要讲到,但在本大纲还没有被撰稿的内容,以后将逐渐完善本大大纲。
图像的增强/////////////////////////////////直方图对话构造函数; ZFT::ZFT(CWnd* pParent /*=NULL*/) : CDialog(ZFT::IDD, pParent)//ZFT为定义的用来显示直方图的对话类; {  Width=Height=0;//对话初始化阶段设置图像的宽和高为"0"; } ////////////////////////对话重画函数; void ZFT::OnPaint() {  CRect rect;//矩形区域对象;  CWnd *pWnd;//得到图片框的窗口指针;  pWnd=GetDlgItem(IDC_Graphic);//得到ZFT对话内的"Frame"控件的指针;  file://(IDC_Graphic为放置在对话上的一个"Picture"控件,并讲类型设置为"Frame")。  pWnd->GetClientRect(&rect);//得到"Frame"控件窗口的"视"区域;  int i;  CPaintDC dc(pWnd);//得到"Frame"控件的设备上下文;  file://画直方图的x、y轴;  dc.MoveTo(0,rect.Height());  dc.LineTo(rect.Width(),rect.Height());  dc.MoveTo(0,rect.Height());  dc.LineTo(0,0);  file://画直方图,num[]是"ZFT"的内部数组变量,存放的是图像各个灰度级出现的概率;该数组的各个分量在  显示具体图像的直方图时设置;  for(i=0;i<256;i++)//根据图像上的各个灰度级出现的概率,在坐标上对应的画出一根直线,从而各个表示各灰度级出现概率的直线构成了图像的直方图;  {   dc.MoveTo(i+1,rect.Height());   dc.LineTo (i+1,(rect.Height()-rect.Height()*num[i]*30));   file://此处num分量乘以"30"是为了放大个灰度级上对应的出现概率直线,增强显示效果;  } } //////////////////////////////////////////////////////// void ZFT::OnMouseMove(UINT nFlags, CPoint point) {//OnMouseMove函数处理鼠标消息,显示当前鼠标所在直方图上的灰度值等信息;  CWnd *pWnd,*pWndText;//定义两个窗口对象;  CPoint point1;//定义个一个点对象;  point1=point;//存放当前鼠标的位置信息;  CRect rect;//矩形对象;  CString string ;//字符串对象;  pWnd=GetDlgItem(IDC_Graphic);//得到显示直方图的框架窗口对象指针;  pWndText=GetDlgItem(IDC_NUM);//得到指向文本框对象(IDC_NUM)窗口的指针;  pWnd->GetWindowRect(&rect);//获取pWnd窗口对象窗口区域位置;  file://屏幕坐标转换为客户区坐标;  ScreenToClient(&rect);  file://判断当前鼠标是否指在直方图内;  if(rect.PtInRect (point))  {   int x=point1.x-rect.left;   file://当前鼠标位置减去区域的起始位置恰好为当前鼠标所指位置所表示的灰度级;   string.Format("%d",x);   file://显示当前位置对应的图像的灰度级;   pWndText->SetWindowText((LPCTSTR)string);  }  CDialog::OnMouseMove(nFlags, point); } //////////////////////////////////////// void CDibView::OnImagehorgm() file://在程序的"视"类对象内处理显示图像直方图的函数; {  CDibDoc *pDoc=GetDocument();  HDIB hdib;  hdib=pDoc->GetHDIB();  BITMAPINFOHEADER *lpDIBHdr;//位图信息头结构指针;  BYTE *lpDIBBits;//指向位图像素灰度值的指针;  lpDIBHdr=( BITMAPINFOHEADER *)GlobalLock(hdib);//得到图像的位图头信息  lpDIBBits=(BYTE*)lpDIBHdr+sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD);  file://获取图像像素值  ZFT dialog;//直方图对话模板对象;  int i,j;  int wImgWidth=lpDIBHdr->biWidth;  int wImgHeight=lpDIBHdr->biHeight;  file://a[]数组用来存放各个灰度级出现的概率;  float a[256];  for(i=0;i<256;i++)//初始化数组;  {     a[i]=0;  }  file://统计各个灰度级出现的次数;  for(i=0;i对话框;  }  return; }

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧