VC无模式对话框与有模式对话框问题

合集下载

c++ 期末复习知识点整理

c++ 期末复习知识点整理

基本概念:1.c++是在20世纪80年代初期由贝尔实验室设计的一种在c语言基础上增加了对(面向对象)程序设计支持的语言。

2.include<iostream.h>是c++库文件。

cout<<"输入";//输出cin>>r; //输入3.一个c++程序由编译预处理指令,数据或数据结构定义和若干函数组成。

4.一个c语言程序可以包含若干函数,其中main表示主函数,每个函数的执行必须从main开始。

5.c++将数据分为基本数据类型,派生类型,符合类型=构造类型,VC6.0不支持bool型6.指数形式,E或(e)后面必须是整数7.c++不支持空字符常量['']是不合法,[""]是合法;endl表示换行。

8.如果需要在字符串中出现双引号,则必须用"\"表示。

例如:"please press\"F1\" to help"9.变量的默认类型为double10.使用const,define表示定义标识符常量。

11.条件运算符nNum=(a>b)?10:812.size of是用于返回操作数所占的内存空间大小13.break用于结束switch循环或从一个循环跳出。

continue用于结束本次循环进入到一个循环中。

14.c++是一种面向对象的程序设计语言,它与面向过程设计方法的最大不同是引入了“类和对象”的概念,而此时函数是构造“类”成员的一种手段。

15.函数调用时,实参与形参的个数应相等,类型应一致,且按顺序对应,一一传递数据16.在c++中,允许在函数声明或定义时给一个或多个参数指定默认值,这样在调用时,可以不给出参数,而按指定的默认值进行工作。

(1)函数既有原型声明又有定义时,默认参数只能在原型生命中指定。

(2)当一个函数中需要有多个默认参数时,则形参分配中。

VC6.0 显示,关闭,销毁模态与非模态对话框技巧

VC6.0 显示,关闭,销毁模态与非模态对话框技巧

VC6.0 显示,关闭,销毁模态与非模态对话框技巧一、显示对话框:1.显示模式对话框:CDialogDemo dlg;dlg.DoModal();2.显示非模式对话框:CDialogDemo *dlg=new CDialogDemo(this);dlg->Create(IDD_GENERAL_CONTROL);dlg->ShowWindow(SW_SHOW);二、关闭对话框:1.CDialog::OnOK();2.CDialog::DestoryWindow();3.CDialog::EndDialog(0);注:CDialog::CloseWindow(); 仅仅是最小化对话框PostMessage(WM_CLOSE)相关函数详解:CloseWindow函数功能:该函数最小化指定的窗口,但并不销毁该窗口。

函数原型:BOOL CloseWindow(HWND hWnd);参数:hWnd:将要最小化的窗口的句柄。

返回值:如果函数成功,返回值为非零;如果函数失败,返回值为零。

若想获得更多错误信息,请调用GetLastError函数。

备注:窗口尺寸被最小化成一个图标,并移动到屏幕的图标区域。

系统显示窗口的图标而不显示窗口,并在图标下显示窗口标题。

应用程序必须使用DestroyWindow函数销毁窗口。

DestroyWindow函数功能:销毁指定的窗口。

这个函数通过发送WM_DESTROY 消息和WM_NCDESTROY 消息使窗口无效并移除其键盘焦点。

这个函数还销毁窗口的菜单,清空线程的消息队列,销毁与窗口过程相关的定时器,解除窗口对剪贴板的拥有权,打断剪贴板器的查看链。

函数原型:BOOL DestroyWindow( HWND hWnd // handle to window to destroy);hWnd :将被销毁的窗口的句柄。

返回值:如果函数成功,返回值为非零:如果函数失败,返回值为零。

VC++ 课件 第05章 对话框和常用控件

VC++ 课件 第05章 对话框和常用控件

5.2控件的创建和使用方法
5.2.1控件的创建方法 控件的创建方式有以下两种: 一种是在对话框模板中用编辑器指定控件,也就是说,将控件的父窗口指 定为对话框,这样做的好处是明显的,因为当应用程序启动该对话框时, Windows系统就会为对话框创建控件;而当对话框消失时,控件也随之清 除。 另一种方式是将控件看作是任一窗口的子窗口,并通过调用相应的Create 函数来创建。 [例Ex_SDIHello] 在上例Ex_SDIHello的基础上用子窗口方式创建控件。 (1)打开CMyDlg的头文件MyDlg.h,添加一个按钮类CButton指针变量: class CMyDlg : public CDialog { // Construction public: CMyDlg(CWnd* pParent = NULL); // standard constructor CButton *m_btnWnd; … }
5.1对话框的使用
在程序中使用对话框 (1)利用项目工作区的ClassView标签项,将Ex_SDIHello.cpp源文件打开; (2)在Ex_SDIHello.cpp源文件的前面加上包含类CMyDlg的头文件: #include "MyDlg.h" (3)在InitInstance函数体中的“return TRUE;”语句之前添加下列代码: CMyDlg dlg; dlg.DoModal(); DoModal是模态对话框最常用的函数,它负责对话框的显示和终止。 (4)编译并运行。在程序的一开始就出现用户自己设计的对话框,单击 [Button1]按钮将弹出“欢迎进入对话框的设计!”的消息对话框来。
5.1对话框的使用
5.1.2使用对话框编辑器
打开对话框编辑器
将项目工作区窗口切换到ResourceView页面,双击Dialog目录下任意一个对 话框ID。或者,选择“Insert”“Resource”菜单命令(或按快捷键Ctrl+R), 选择Dialog项,单击New。

模式对话框与非模式对话框的区别

模式对话框与非模式对话框的区别

模式对话框就是不处理它就没法处理父窗口,而非模式对话框就是不用先处理此对话框也可以处理父窗口.例子:在桌面上右击我的电脑,选择属性,弹出系统属性窗口,点击下面的技术支持,弹出技术支持信息,现在再对系统属性窗口进行操作就操作不了,这种叫做模式对话框;关闭技术支持信息,在系统属性里选择硬件,点击设备管理器,弹出设备管理器窗口,现在再对系统属性窗口进行操作仍然可以操作,这种就叫做非模式对话框。

在WIN32中,模式对话框的创建一般是使用DialogBox来进行创建的。

而非模式对话框则是利用CreateWindow来创建的。

在MFC或是WTL中,模式对话框一般是使用DoModal,而非模式对话框的创建则是使用Create。

一、使用中的区别模式对话框创建后,程序的其他窗口便不能进行操作,必须将该窗口关闭后,其他窗口才能进行操作。

而非模式对话框则无需这样,它不强制要求用户立即反应,而是与其他窗口同时接受用户操作。

二、消息响应的区别在消息响应方面,模式对话框和非模式对话框之间又有着很大的区别。

模式对话框工作的时候,它有内部的消息泵机制,控件之间的交互不用我们人为的去控制,系统会帮助我们去处理。

非模式对话框则像普通窗口一样,则由WinMain中书写的消息循环驱动。

但由于是对话框,它对一些消息有特殊的处理。

因此,在消息循环中,需要先对对话框提供截获消息的机会。

While (GetMessage(&msg, NULL, 0, 0)){if (hDlgModeless == 0 || !IsDialogMessage(hDlgModeless, &msg)){TranslateMessage(&msg);DispatchMessage( &msg);}}如果当前取得的消息是对话框的消息,IsDialogMessage 将它交由对话消息处理函数处理,并返回TRUE。

不需要再派发了。

注意:这个方法并不是很好用,因为当对话框过多的时候,处理起来就比较麻烦了。

VC中的模态对话框和非模态对话框

VC中的模态对话框和非模态对话框

2 、非 模 态对 话框
非 模 态 对 话 框 则 是 另 一 种 对 话 框 形 式 。 当 显 示 出 非 模
态 对 话 框 时 , 程 序 的 其 他 部 分 能 够 照 常 运 行 。 因 此 非 模 态 B OOL CD ao : :C e t ( N I T mPa e iI q r a e UI T n D e lt ,C n W d
( 选 择 资源视 图 窗格 ,显 示 出工程 的资 源。 1)
层 的 模 态 对话 框 进 行 操 作 ,并 且 当 它 关 闭 时 程 序 将 返 回 到 打 资源 的步 骤 : 使 用 模 态 对话 框 时 ,在对 话 框 弹 出 后调 用 函 数 不 会立 即返
回 ,而 是 等 到 对话 框 销 毁 后 才会 返 回 ,所 以使 用 对话 框 时 其 他
A PPLI A T C ION
■ _
V 中的模 态对 话框和 非模 态对话框 C
话框 。它 们都 有 各 自的用途 ,掌握 它很 有必 要 。
摘 要 :VC中对 话 框分 为 两 大 类 ,模 态 对话 框 和 非模 态 对 能 。至于 新添 的对话 框 的控件 功 能则 与主对 话框 是 一致 的。 如 果 只 是 需 要 一 个 对 话 框 来 提 示 用 户 的 话 , 调 用 Ax sae o fMe s g B x() 函数 并输 入 不 同 的参 数 。第 一种 形式 下 第 关 键词 :模 态 对话 框 ;非模 态对 话框 ;屙 l 生
则 非模 态对 话框 将是 不 可见 的。
3 、通 用 埘 话 框 和 属 性 对 话 框
W id ws系统 中提 供 了一 些通 用对 话框 ,如 :文件 选 择对 no 话 框 、颜 色 选 择对 话 框 、字 体 选择 对 话 框 等 ,他 们 分别 在 MF C 中使 用 Ci Dao 、C o r io 、C o t io 来表 示 。 fe i g c l Da g F nDa g l l o l l

【初学VC讲稿】第5篇:对话框应用简单示例

【初学VC讲稿】第5篇:对话框应用简单示例
(1)用对话框编辑器创建包含各种控件的对话框资源。对话框编辑器会对项目的资源文件
进行更新使之包含新的对话框资源,并且该项目的resource.h文件也会被更新,以便能包含
新的#define常量。
(2)利用ClassWizard创建Cdialog的派生类,并将它同第一步创建的资源相连接。ClassWizard会自动在Developer Studio的项目中加入相应的代码和头文件。
今天我们来学习对话框的编程
【知识要点】(参考《Visual C++技术内幕》)
1,模式对话框(Modal dialog box):打开后直至关闭期间不可在应用程序的其它位置工作。非模式对话框(Modalless dialog box):打开后直至关闭期间可在应用程序的其它位置工作。
2,对话框编程的一般步骤
while(1)
{s
if(dlg.DoModal()==IDCANCEL)//选择[退出]将退出应用程序
{
return false;
}
if(dlg.m_strPassword=="123456")//密码正确,跳出循环
{
break;
}
else//密码不正确,提示重新输入
{
AfxMessageBox("密码不正确,请重新输入");
Member variable name:m_strPassword
Category:value
Variable type:Cstring
4,在MyDefMsg.cpp文件中修改BOOL CMyDefMsgApp::InitInstance()
BOOL CMyDefMsgApp::InitInstance()

VC显示关闭销毁模态与非模态对话框技巧

VC显示关闭销毁模态与非模态对话框技巧

VC显示关闭销毁模态与非模态对话框技巧VC++是一种用于Windows平台开发应用程序的集成开发环境,用于构建图形用户界面和控制应用程序的行为。

在VC++中,对话框是一种常用的用户界面元素,可以用于显示和获取用户输入。

在使用对话框时,要注意对话框的显示、关闭和销毁。

1.显示对话框在VC++中,显示一个对话框可以通过以下几种方式实现:a. 使用DoModal函数DoModal函数是CDialog类的一个成员函数,用于显示对话框,并返回对话框的返回值。

例如,可以使用下面的代码显示一个对话框:CMyDialog dlg;dlg.DoModal(;b. 使用Create函数Create函数是CDialog类的另一个成员函数,用于创建对话框,并显示它。

使用Create函数时,需要先调用Create函数创建对话框,然后调用ShowWindow函数显示对话框。

以下是使用Create函数显示对话框的示例代码:CMyDialog dlg;dlg.Create(IDD_MYDIALOG);dlg.ShowWindow(SW_SHOW);c.使用模态对话框模态对话框是一种阻塞式对话框,显示模态对话框时,在对话框关闭之前,用户无法与其他应用程序进行交互。

要显示一个模态对话框,可以通过调用DoModal函数,并传递对话框的资源ID来实现。

以下是使用模态对话框的示例代码:CMyDialog dlg;INT_PTR nResponse = dlg.DoModal(;2.关闭对话框在VC++中,可以使用以下几种方式关闭对话框:a. 使用EndDialog函数EndDialog函数是CDialog类的一个成员函数,用于关闭对话框,并返回对话框的返回值。

以下是使用EndDialog函数关闭对话框的示例代码:OnOKEndDialog(IDOK);b.使用DestroyWindow函数DestroyWindow函数是CWnd类的一个成员函数,用于销毁窗口,并关闭对话框。

VC中常遇到的问题

VC中常遇到的问题

(1)为什么某个类突然在工作区间里面突然看不见了?只是类隐藏了,打开FILEVIEW,找到隐藏类的头文件,随便敲一下键盘的空格键,类就会在CLASSVIEW 中显示了(2)在基于对话框的程序中,一按回车键,对话框就没了。

把确定按纽的缺省属性前面的对勾去掉,重载OnOk()函数,在OnOk()函数里注释掉调用基类的OnOk()函数那行代码(3)为什么我的VC6.0自动显示成员列表功能时有时无?删除该项目扩展名为.ncb文件,重新打开该项目。

(4)孙老师的视频教程第一课的程序,为什么在我机子上不行?选菜单project->settings...在弹出的对话框中选Link,在最下边有Project Options,把里边的/subsystem:console 删除就可以了(5)如何干净的删除一个类?先从workspace中的fileview中删除对应的.h和.cpp文件;再关闭项目,从实际的文件夹中删除对应的.h 和.cpp文件;再删除.clw文件。

最后打开项目,rebuild all。

(6)网络编程一课中的聊天室程序在为什么老是绑定失败?一般这种问题是端口设置在6000监听,正好和QQ的端口冲突,多换几个端口试试就可以了(7)网络程序只能在debug运行,release不行,提示错误error LNK2001: unresolved external symbol __imp__WSAStartup@8,在Release下仍然需要添加Ws2_32.lib。

(8)我画了一条直线但是当窗口最大化时或者被其他窗口覆盖时,直线不见了,只剩下直线原先存在的窗口这是因为窗口重绘,你可以在响应WM_PAINT的OnDraw()函数中添加画线的代码(9)在安装VC时未安装MSDN, 自己再用MSDN安装盘安装后在VC中按F1无法调用?修改注册表是最直接的方法,具体过程如下:在HKEY_CURRENT_USER/Software/Microsoft/DevStudio/6.0/Help下增加Enable,Filename,State三个主键,注意其类型,含义如下: Enable 类型:DWORD,默认值是1,改变为0x00000001 Filename 类型:字符串改为c:\program files\....\MSDev98\help\Msdev.hlp State 类型:DWORD 默认值为0,改变为0x00000001 (10)如何在应用程序中打开一个超级链接?这个问题实际上很简单,只要使用ShellExecute API函数就行了(11)如何在没安装VC的环境下的机器也能打开运行用MFC编写的程序?把编译模式改为RELEASE,然后点工程-》设置-》常规,选择使用MFC作为静态连接库(12)如何自定义一个消息?1)#define WM_MY_MESSAGE WM_USER+1;2)头文件DECLARE_MESSAGE_MAP()前写消息响应函数原形;3)在BEGIN_MESSAGE_MAP添加消息到函数的映射;4)写函数的实现部分。

计算机程序设计员考试模拟题(含参考答案)

计算机程序设计员考试模拟题(含参考答案)

计算机程序设计员考试模拟题(含参考答案)一、单选题(共100题,每题1分,共100分)1.( )是结构化系统分析的基本工具。

A、数据流图B、状态转化图C、程序流程图D、对话图正确答案:A2.要在Visual C++应用程序内使用( ) ActiveX数据对象,应该选择OLE DB作为连接类型,然后再应用程序中使用ADO类。

A、DAOB、OLE DBC、ODBCD、ADO正确答案:D3.工具条编辑器实际上是一个图形工具,它主要用于( )工具条资源,并把位图转换成工具条资源,而且可使用图形界面来显示工具条和一些按钮。

A、修改B、删除C、创建D、编辑正确答案:C4.在进行软件结构概要设计时要遵循一些原则,其中“深度、宽度、扇出和扇入应该适中”中的扇出指( )。

A、一个模块被多少模块调用B、软件结构控制的层数C、软件结构中模块层的最多模块数D、一个模块直接控制的模块数正确答案:D5.( )是网络的核心,它的主要任务是为网络上的其它机器提供服务。

A、客户机B、网络协议C、工作站D、服务器正确答案:D6.在表中使用IDENTITY列时,每张表只允许有()IDENTITY列。

A、一个B、两个C、三个D、四个正确答案:A7.( )依赖于事件,这和任何COM对象一样。

A、DAOB、dBASEC、OLE DBD、ODBC正确答案:C8.下列关于ClassView提供的特性中,说法错误的是:( )。

A、用户只需双击ClassView图标,就可以创建新的类B、用户只需双击ClassView图标,就可以删除类C、用户只需双击ClassView图标,就可以直接跳到代码处D、用户只需双击ClassView图标,就可以类、声明或函数定义正确答案:B9.要求表中的列在组成主键的属性上不能为空值,这是()A、实体完整性规则B、用户定义完整性规则C、参照完整性规则D、域完整性规则正确答案:A10.下列哪一种说法是对SQL Server的描述是错误的()A、关系型数据库。

Ms Visual C++讲义4--对话框

Ms Visual C++讲义4--对话框

单选按钮 IDC_SEX1
未完待续见下页
步骤之五
控件
控件9
类别
续表1 控件属性表 ID值 属性
Caption:女,TabStop Caption: Caption:费用, TabStop , Caption:自费, TabStop,Group Caption:公费, TabStop TabStop,Dropdown,Data:专家 号、普通号,sort不选 TabStop IDC_COST
§2 模式对话框的启动机制
• 见VC开发环境: CDialog::DoModal( );//显示对话框及其控件 • 体验模式对话框的特点: 垄断性 • 关闭对话框: CDialog::EndDialog( );
模式对话框的创建
1. 增加对话框资源:
resource? 见VC环境(创建临时工程SDI)。
步骤之三
图1 对话框中控件分布
步骤之四
控件
控件1 控件2 控件3 控件4 控件5 控件6 控件7 控件8
类别
按钮 按钮
表1 控件属性表 ID值
ID_IN IDCANCEL
属性
Caption:进入,TabStop Caption:退出,TabStop
静态文本 IDC_STATIC1 Caption:姓名 编辑框 编辑框 组框 IDC_NAME TabStop 静态文本 IDC_STATIC2 Caption:年龄 IDC_AGE IDC_SEX TabStop Caption:性别 Caption:男,TabStop,Group
§4
§4-1 控件的概念
控件
• 控件:是嵌入到对话框或其他父窗口中的一个小窗 口,用于显示或获取某些类型的信息。对话框通过 控件与用户交互。 • 常用控件及作用: 见VC环境。

vc实验报告-对话框

vc实验报告-对话框
class CStuDialog;
private:
CStuDialog *m_pDlg;
m_pView->PostMessage(WM_GOODBYE,IDC_SHOW);
}
else
{
CDialog::OnOK();
}
}
7、同样的在CFeiMotaiView类中添加CStuDialog指针,声明class CStuDialog
包含CStuDialog.h头文件。
#include"StuDialog.h"
if(m_bJapanese==1)
Japanese.Format("日语");else Japanese.Format("");
pDC->TextOut(0,20,m_strName);
pDC->TextOut(0,40,m_strMajor);
pDC->TextOut(60,40,English);
{
biaoshi=1;
CStuDialog::OnOK();
// TODO: Add your control notification handler code here
}
11、在CMotaiView中重载OnDraw函数,在窗口中显示与用户交互的信息:
void CMotaiView::OnDraw(CDC* pDC)
}
// TODO: add draw code for native data here
}
二、非模态对话框。
1、与非模态类似,建立新建MFC APP wizard工程,建立单文档并命名为FeiMotai,前六步与建立模态对话框类似。

南京师范大学VC++期末考题

南京师范大学VC++期末考题

1.DLL的主要类别和各自功能KERNEL32.DLL (用来处理存储器低层功能,任务和资源管理等Windows 核心服务)GDI32.DLL(用来提供图形设备接口,管理用户界面和图形绘制等Windows 元文件,位图,设备描述表和字体等)USER32.DLL(负责窗口的管理,包括消息,菜单,光标,计时器以及其他与控制窗口显示相关的一些功能)2.VC++工程生成各种扩展名的文件意义(p133_5.1.2)英语好的同学直接读每个VC++工程里面的Read Me.txt,见最后附录。

C++中介绍过的基本的:编辑:当使用上面的工具按照c++语法规则编写完成后,保存生成的文件就是.cpp文件编译:使用系统提供的编译器检查员程序在语法和逻辑结构上的错误。

若发现错误,则显示错误的类型和位置;若检测通过,则将编译好的c++源程序转换为目标文件,即生成文件的目标代码,扩展名是.obj链接: 将用户程序生成得多个目标代码文件(.obj)和系统提供的库文件(.lib)中的某些代码连结在一起,生成一个可执行文件,扩展名是.exe。

执行:把生成的可执行文件运行,在屏幕上显示运行结果。

VC++中的:扩展名为dsw的文件类型, VC中是级别最高的, 称为Workspace文件。

在Workspace 文件中可以包含多个Project, 由Workspace文件对它们进行统一的协调和管理。

与dsw类型的Workspace文件相配合的一个重要的文件类型是以opt为扩展名的文件, 这个文件中包含的是在Workspace文件中要用到的本地计算机的有关配置信息, 所以这个文件不能在不同的计算机上共享, 当我们打开一个Workspace文件时, 如果系统找不到需要的opt类型文件, 就会自动地创建一个与之配合的包含本地计算机信息的opt文件。

在VC中, 应用程序是以Project的形式存在的, Project文件以.dsp扩展名, 这个文件中存放的是一个特定的工程, 也就是特定的应用程序的有关信息, 每个工程都对应有一个dsp 类型的文件。

Visualc++中不使用对话框模板资源创建对话框应用

Visualc++中不使用对话框模板资源创建对话框应用
这两个成员函数都包含参数 LPCDLGTEMPLATElpDialogTemplate,它指向包含对话框和控件资源的内存位置。该段内存的具体内容包括 两部分:
1.1对话框资源
最开始为DLGTEMPLATE结构,指出对话框窗口的位置、大小和风格,紧接其后的是指向菜单资源的数组(前两个字节为0x00 00表示没有菜单), 接下来的UniCode字符串数组表示控件对应的注册类名(前两个字节为0x0000表示使用缺省的预定义类),然后是UniCo de字符串数组表示的对话框标题,双字节的字体长度和字体名。
表1
0x0080 0x0081 0x0082 0x0083 0x0084 0x0085
Button Edit Static List box Scroll bar Combo box
表1 其中DLGTEMPLATE结构为 typedefstruct //dltt
DWORDstyle DWORDdwExtendedStyle WORD cdit shortx shorty shortcx shortcy DLGTEMPLATE style和dwExtendedStyle为对话框的风格,cdit表示对话框包含的控件个数,x,y,cx,cy表示窗口的大 小。DLGITEMTEMPLATE结构与此类似,仅多了一项标识id。 通过上面的描述,可以知道只须自行申请内存空间,按要求在内存中定义对话框和控件的资源,就可以不再依赖项目资源。实际编程中,因 为在对话框类中定义和创建控件比较容易,因此往往可以仅定义内存对话框资源而省略控件资源部分,通过常规方法动态创建就可以了。 2、实现方法与步骤 下面结合一个进度显示对话框实例介绍具体实现的步骤: 首先从CDialog中派生一个类CMemoryDialog,作为所有无模板对话框的基类。选择菜单Insert->NewCl ass 弹出New Class对话框,在Name项键入CMemoryDialog,BaseClass项选择 CDialog,按确定按钮。ClassWizard提示用户首先创建对话框模板资源,对此不与理会,继续创建。在创建成功的. h文件中找到enum IDD = _UNKNOWN_RESOURCE_ID_ ,表示未知的资源ID 将这行代码删除。 定义成员变量: CStringm_StrTitle //对话框标题 DLGTEMPLATEm_dlgTempl //内存对话框模板 定义成员函数: intDoModalMemoryDialog //用于创建模式对话框 voidCreateMemoryDialog //用于创建无模式对话框 其中DoModalMemoryDialog 的代码清单如下: intCMemoryDialog DoModalMemoryDialog

VC考试试题

VC考试试题

VC考试试题VC++复习题选择题1. 下列关键字中哪一个不是用于类的访问控制的(B)A.public B. friend C. private D. protected2. 以下四个特性中哪一个不属于面向对象的三大特性(C)A.封装性 B. 多态性 C. 抽象性 D. 继承性3.管理MFC应用程序(A)A. CWinAPPB. CmainFrameC. CDoucumentD. CView4. 关于构造函数,下列说法不正确的是(A)A. 一个类中有且仅有一个构造函数B. 构造函数在说明类变量时被自动执行C. 构造函数没有返回值类型D. 类中的构造函数的函数名与该类的类名必须同名5.关于析构函数,下列说法不正确的是(C)A. 类中有且仅有一个析构函数B. 析构函数可以没有形参C. 析构函数没有返回值类型D. 析构函数在对象消失时被自动执行6. 下列类中不属于MFC框架基本类的时(D)A. CWinAppB. CFrameWndC. CViewD. CObject7. 下列选项中哪一个不是命令消息的产生途径(C)A. 选择菜单B. 单击工具栏C. 点击对话框的按钮D. 程序产生命令8. 下列关于构造函数的描述中,错误的是(D)A. 构造函数可以设置默认参数B. 构造函数在定义类对象时自动执行C. 默认构造函数可以没有D. 构造函数不可以重载9. 当在使用类模板时,类模板本身被实例化成了一个具体的(D)A. 对象B. 实例C. 模板类D. 类10. 以下四个关于类的访问控制的描述哪一个是错误的(D)A. 子类不能访问其父类的私有数据成员和成员函数B. 子类的对象不能访问其父类的保护数据成员或者成员函数C. 类的对象不能访问类保护数据成员或者成员函数D. 类的成员函数不能访问类中的私有数据11.下面有关重载函数中说法正确的(C)A. 重载函数必须有不同的返回值类型B. 重载函数形参个数必须不同C. 重载函数必须有不同的形参列表D. 重载函数名可以不同12.一个视图对象能连接()文档对象,一个文档对象能连接(D)视图对象。

VC

VC
控件 I D N I
张友鹏
数据 成 员
I O rg n l l i i m si a in De t to n
娄 型
Cs ig tn r CS r g ti n
l C^ DC RGONAM E n C ) OW NE RN^ME I DC COACHNUM BER
m to me Ca g Na m O,' r me  ̄ e Na n m a h mb r CO C Hu e
Csrn tig Csr e ti n ]n og
对 话框分为两种—— 模式和无模式对 框 。 于模式对 对
话框 ,如 Mi oo r c SfWod中的 OpnFl对话框 , 该对 话框 r t e i e 被关 闭以前 ,用户将无法在 同一应 用程序 的其它地方进 行工 作 :对 于无模 对 话框,在它仍然保 留在屏幕上 的l 司时,用 户还可 以在应用程序的j 它窗 口中进行T作 。 c sfWod Mi o r o r t 中的 Fn n e l e i A d R pa 对话框就是无模式 对 框 的一个很好 d c 的例 子。在 MF 42 C .I中 C il dao g类对象的色建 极其简单。所 以,作者选用 C a g类 ,而不足通常的 C d娄 作为基类 Dio l Wn 来派生 白_ 听需的类 .模式 对 西框 一 旦被创建就会 独 占程序 己 的控 制权,退 出后才会把控 制权交给 主程序 如果受实现直 接操纵的控制 抖面就 需要 有多个共 存的、彼此 调丁怍的隐 藏窗件来支持用户的界面操 作。模 式对话框 由于它 的独 占件 是不能胜任的 。而多个无模 对话框 可以同时存在 而 I它们 1 的 窗体也裉容 易被隐 藏。利用无模式对话框的这些特 点 ,先 创建无摸式对 话框再 隐藏 它的窗体 ,这样,隐藏 的无模式对 话框对象就能 1持用户 的界面操 作 了。无模式对 话框的创建 支 是 很简单的,先调用j 父类 C ao Di g类 的默认构造函数构造 l 个 对 框 对 象 , 以 白 己 的 资 源 I 为 参 数 调 用 D C a g:rae Dio : et 函数 即可。侧如 : l C

C#非模式窗体show()和模式窗体showdialog()的区别

C#非模式窗体show()和模式窗体showdialog()的区别

C#⾮模式窗体show()和模式窗体showdialog()的区别对话框不是模式就是⽆模式的。

模式对话框,在可以继续操作应⽤程序的其他部分之前,必须被关闭(隐藏或卸载)。

例如,如果⼀个对话框,在可以切换到其它窗体或对话框之前要求先单击“确定”或“取消”,则它就是模式的。

⼀、如何调⽤任何窗体(派⽣于基类Form的类),都可以以两种⽅式进⾏显⽰。

//⾮模式窗体From qform=new Form();qform.Show();//模式窗体Form qform=new Form();qform.ShowDialog();⼀、控制权上的区别Form.Show创建新窗体后(⾮模式),⽴即返回,且没有在当前活动窗体和新窗体间建⽴任何关系,即在保持新窗⼝的情况下关闭(或最⼩化)现有窗体或在保留现有窗体情况下关闭(或最⼩化)新窗⼝,都是可以的。

Form.ShowDialog创建模式窗体,即只有当建⽴的新窗⼝关闭之后,原有窗体才能重新获得控制权。

即如果不关闭新窗⼝,将⽆法对原活动窗⼝进⾏任何操作。

对新窗⼝进⾏的最⼩化、还原将会和原窗⼝⼀起进⾏,但是新窗⼝的关闭对原窗⼝没有影响。

需要注意的是,不管是何种情况,只要主窗体被关闭了,或主程序结束了,那么Application.Run将会关闭所有窗体,不管它是模式还是⾮模式。

⼆、Owner属性带来了什么上⾯所讲的是不建⽴拥有关系时的窗体。

当为窗体间建⽴了拥有关系,情况就会有所变化。

1、⾸先看⾮模式的情况。

为⾮模式新窗⼝建⽴拥有关系的⽅法是修改其Owner属性。

(默认情况下,⾮模式窗⼝不存在拥有者)form.Owner=this; //假设当前窗⼝是新窗⼝的拥有者form.Show();很显然,新建的⾮模式窗体已经被认为是原活动窗体的⼦窗体,原窗⼝的⾏为将会影响新窗⼝,所以我们姑且把它们称作⽗窗⼝和⼦窗⼝之间的关系。

那么,改动后会有什么显著的变化呢?主要有两点:第⼀,⽗窗⼝最⼩化、还原或关闭,⼦窗⼝也将随之最⼩化、还原或关闭。

VC++课设-计算两数的差值

VC++课设-计算两数的差值

1设计方案以及功能描述本次VC++程序设计的选题是计算两数的差具体要求如下:(1)建立一个基于基本对话的应用项目(项目名称为学生姓名拼音首字母缩写)。

(2)将对话框的标题改为“计算两数的差”。

(3)在对话框中设置三个编辑框,分别用来接收被减数、减数、显示计算结果。

设计两个按钮,分别为“计算”和“退出”。

(4)当按下“计算”按钮时就显示正确的计算结果。

2对话框的基本原理2.1对话框的工作原理在创建一个对话框之前,我们先来了解一下对话框是如何工作的,对话框的数据来自三方面:对话框资源、对话框对象、和一个文档对象:2.1.1对话框资源对话框资源是一个用户输入或取得数据的图形界面。

这个图形界面是使用Develop Studio的对话框编辑器在对话框模板上创建的,程序员可以在对话框模板上增加并编辑控件,生成对话框资源。

当应用程序运行时,就可以得到一个对话框。

2.1.2对话框对象MFC使用CDialog类来描述对话框,它是CWnd类的派生类。

在CWnd类的基础上增加了数据交换的功能。

当创建一个新的对话框资源后,使用ClassWizard可以创建一个对话框类的派生类。

对话框对象实现了对话框和应用程序之间的通信。

在应用程序中定义一个对话框对象后,在对话框显示前,可以通过访问对话框对象的成员变量为一个对话框的控件初始化,在对话框关闭后,可以通过访问对话框对象的成员变量获得用户的输入数据。

2.1.3文档对象MFC使用文档对象描述应用程序处理的数据,用户输入的数据要进一步的处理,通常要先存贮到文档对象中。

例如:一个学生记录处理的应用程序,用户通过一个对话框输入学生记录并贮存到一个文件中。

应用程序的处理顺序是:用户在对话框中输入信息,通过对话框对象得到输入信息,将输入信息整理到文档对象中,使用序列化函数将文档对象存贮到一个文件中,所以文档对象扮演了一个很重要的数据交换的角色。

MFC使用以上三者实现用户与应用程序之间数据交换,数据交换流程见图6-1所示,遵循四个步骤。

C#窗体显示

C#窗体显示

C#窗体显示C#中的两种显示窗体模式C#中有两种显示窗体的方法,一个就是Form.Show(),另一个就是Form.ShowDialog()。

虽然两者都可以实现窗体显示,但是二者还是存在着不同点的。

方法名,功能说明Form.Show(),显示窗体。

Form.ShowDialog(),将窗体显示为模式对话框。

重载列表名称说明Form.Show()向用户显示控件。

Form.Show(IWin32Window)向用户显示具有指定所有者的窗体。

名称说明Form.ShowDialog()将窗体显示为模式对话框,并将当前活动窗口设置为它的所有者。

由.NET Compact Framework支持。

Form.ShowDialog(IWin32Window)将窗体显示为具有指定所有者的模式对话框。

二者的区别在于,使用Form.Show()显示窗体,弹出窗体后依然可以对主窗体进行操作。

而使用Form.ShowDialog()显示窗体,弹出窗体后不可以对主窗体进行鼠标操作和键盘操作。

窗体显示中Form.Show()和Form.ShowDialog()的区别窗体和对话框要么是有模式的,要么是无模式的。

“模式”窗体或对话框必须关闭或隐藏,然后您才能继续使用应用程序的其余部分。

显示重要消息的对话框应始终是有模式的。

模式对话框的一个示例是Visual Studio中的“关于”对话框。

MessageBox是您可以使用的一个模式窗体。

有模式对话框显示出来以后,那么开始打开的窗体或对话框就不能再获得焦点了。

“无模式”窗体让您在此窗体与另一窗体之间变换焦点,而不必关闭初始窗体。

用户在该窗体显示的同时可继续在任何应用程序的其他位置工作。

例如:文本编辑软件里面的搜索功能,就是一个无模式的,因为搜索对话框出来以后,还可以操作编辑本文,即它不影响其他窗体获得焦点。

将窗体显示为有模式对话框用form1.ShowDialog()方法。

这个方法有一个可选参数owner,该参数可用于指定窗体的父子关系。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
传递。
/*在对话框中取出数据,并向其他窗口发送消息和数据,
将数据指针作为一个参数发送*/
void CTestDlg2::OnCommBtn()
{
char szOut[30];
GetDlgItemText(IDC_OUT,szOut,30);
m_pParent->SendMessage(WM_DLG_NOTIFY,(WPARAM)szOut);
此时对话框还在显示就会出现错误。那么这就提出了一个问题:什么时候销
毁该对象。我时常使用的方法有两个:
(1)在对话框退出时销毁自己:在对话框中重载OnOK与OnCancel在函数中调
用父类的同名函数,然后调用DestroyWindow()强制销毁窗口,在对话框中
映射WM_DESTROY消息,在消息处理函数中调用delete this;强行删除自身
return 0;
}
/*创建对话框*/
void CMy53_s1View::OnTest2()
{
CTestDlg2 *dlg=new CTestDlg2(this);
dlg->Create(IDD_TEST_DLG_2);
dlg->ShowWindow(SW_SHOW);
}
{
CDialog::OnOK();
DestroyWindow();
}
void CTestDlg2::OnCancel()
{
CDialog::OnCancel();
DestroyWindo::OnDestroy()
{
CDialog::OnDestroy();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
pDC->TextOut(0,0,"Display String");
pDC->TextOut(0,20,m_szOut);
}
/*处理通知消息,保存信息并更新显示*/
VC无模式对话框与有模式对话框问题 (2007-08-06 11:04:55)转载
标签:学习公社
无模式对话框与有模式对话框不同的是在创建后其他窗口都可以继续接收用
户输入,因此无模式对话框有些类似一个弹出窗口。创建无模式对话框需要
调用BOOL CDialog::Create(UINT nIDTemplate,CWnd* pParentWnd
/*更改对话框的有关文件*/
CTestDlg2::CTestDlg2(CWnd* pParent /*=NULL*/)
: CDialog(CTestDlg2::IDD, pParent)
{/*m_pParent为一成员变量,用于保存通知窗口的指针,
所以该指针不能是一个临时指针*/
ASSERT(pParent);
LONG CMy53_s1View::OnDlgNotifyMsg(WPARAM wP,LPARAM lP)
{
m_szOut=(char*)wP;
Invalidate();
return 0;
}
此外这种用法利用消息传递数据的方法对有模式对话框和其他的窗口间通信
也一样有效。
dlg->Create(IDD_TEST_DLG,NULL);
dlg->ShowWindows(SW_SHOW);
/*不要调用 delete dlg;*/
}
在上面的代码中我们新生成了一个对话框对象,而且在退出函数时并没有
销毁该对象.因为如果此时销毁该对象(对象被销毁时窗口同时被销毁),而
}
/*在消息接收窗口中*/
/*映射消息处理函数*/
ON_MESSAGE(WM_DLG_NOTIFY,OnDlgNotifyMsg)/*在视图中绘制出
字符串 m_szOut*/
void CMy53_s1View::OnDraw(CDC* pDC)
{
CMy53_s1Doc* pDoc = GetDocument();
{
CDialog::OnDestroy();
AfxMessageBox("call delete this");
delete this;
}
这种方法的要点是在窗口被销毁的时候,删除自身对象。所以你可以在任何
时候调用DestroyWindow()以达到彻底销毁自身对象的作用。
(DestroyWindow()的调用会引起OnDestroy()的调用)
/*向其他窗口发送消息,将自身指针作为一个参数发送*/
m_pParent->PostMessage(WM_DELETE_DLG,
(WPARAM)this);
}
/*在消息接收窗口中添加消息映射*/
/*在头文件中添加函数定义*/
afx_msg LONG OnDelDlgMsg(WPARAM wP,
m_pParent=pParent;
//{{AFX_DATA_INIT(CTestDlg2)
// NOTE: the ClassWizard will add member
initialization here
//}}AFX_DATA_INIT
}
void CTestDlg2::OnOK()
在这种方法中我们利用消息来进行通知,在Window系统中利用消息进行通知
和传递数据的用法是很多的。
同样无模式对话框的另一个作用还可以用来在用户在对话框中的输入改变时
可以及时的反映到其他窗口。下面的代码演示了在对话框中输入一段文字,
然后将其更新到视图的显示区域中,这同样也是利用了消息进行通知和数据
LPARAM lP);
/*添加消息映射代码*/
ON_MESSAGE(WM_DELETE_DLG,OnDelDlgMsg)
END_MESSAGE_MAP()
/*实现消息处理函数*/
LONG CMy53_s1View::OnDelDlgMsg(WPARAM wP,LPARAM lP)
{
delete (CTestDlg2*)wP;
(2)通过向父亲窗口发送消息,要求其他窗口对其进行销毁:首先需要定义
一个消息用于进行通知,然后在对话框中映射WM_DESTROY消息,在消息处理
函数中调用消息发送函数通知其他窗口。在接收消息的窗口中利用
ON_MESSAGE映射处理消息的函数,并在消息处理函数中删除对话框对象。相
关代码如下:
对象。相关代码如下:
void CTestDlg1::OnOK()
{
CDialog::OnOK();
DestroyWindow();
}
void CTestDlg1::OnCancel()
{
CDialog::OnCancel();
DestroyWindow();
}
void CTestDlg1::OnDestroy()
= NULL);之后还需要调用BOOL CDialog::ShowWindow( SW_SHOW);进行显
示,否则无模式对话框将是不可见的。相关代码如下:
void CYourView::OnOpenDlg(void)
{
/*假设IDD_TEST_DLG为已经定义的对话框资源的ID号*/
CTestDlg *dlg=new CTestDlg;
相关文档
最新文档