添加无模式对话框

本文只描述了一种添加无模式对话框的方法,不涉及所有方法的讨论,有好的方法,欢迎大家讨论。关于模式和无模式的对话框的区别,在上篇文章中已有,不再赘述,直接捞干的。

1、创建的是基于对话框的工程。(我的是wince下的);

2、有一个父窗口,插入新的窗口如newDlg,并将其属性设置为child;

3、给newDlg 添加类,如newDlg.cpp , newDlg.h

4、在父窗口文件中添加以下代码:

某个按钮操作函数{           //创建

  newDlg  NewDlg;

       NewDlg.Create(NewDlg.IDD,this);

       NewDlg.ShowWindow(SW_SHOW);

某个按钮操作函数{               //销毁

      NewDlg.ShowWindow(SW_HIDE);
            NewDlg.SendMessage(WM_DESTROY);
         }

5、别忘了包含头文件。

6、关于create函数:

1 virtual BOOL Create(
2    LPCTSTR lpszTemplateName,
3    CWnd* pParentWnd = NULL
4 );
5 virtual BOOL Create(
6    UINT nIDTemplate,
7    CWnd* pParentWnd = NULL
8 );
9  
lpszTemplateName

Contains a null-terminated string that is the name of a dialog-box template resource.

pParentWnd

Points to the parent window object (of type CWnd) to which the dialog object belongs. If it is NULL, the dialog object‘s parent window is set to the main application window.

nIDTemplate

Contains the ID number of a dialog-box template resource.

You can put the call to Create inside the constructor or call it after the constructor is invoked.

Two forms of the Create member function are provided for access to the dialog-box template resource by either template name or template ID number (for example, IDD_DIALOG1).

For either form, pass a pointer to the parent window object. If pParentWnd is NULL, the dialog box will be created with its parent or owner window set to the main application window.

The Create member function returns immediately after it creates the dialog box.

Use the WS_VISIBLE style in the dialog-box template if the dialog box should appear when the parent window is created. Otherwise, you must call ShowWindow. For further dialog-box styles and their application, see the DLGTEMPLATE structure in the Windows SDK and Window Styles in the MFC Reference.

Use the CWnd::DestroyWindow function to destroy a dialog box created by the Create function.

例子:

 1 void CMyDialog::OnMenuShowSimpleDialog()
 2 {
 3    //m_pSimpleDialog initialized to NULL in the constructor of CMyDialog class
 4    m_pSimpleDlg = new CSimpleDlg();
 5    //Check if new succeeded and we got a valid pointer to a dialog object
 6    if(m_pSimpleDlg != NULL)
 7    {
 8       BOOL ret = m_pSimpleDlg->Create(IDD_SIMPLEDIALOG, this);
 9
10       if(!ret)   //Create failed.
11          AfxMessageBox(_T("Error creating Dialog"));
12
13       m_pSimpleDlg->ShowWindow(SW_SHOW);
14    }
15    else
16    {
17       AfxMessageBox(_T("Error Creating Dialog Object"));
18    }
19 }

时间: 2024-10-10 23:15:23

添加无模式对话框的相关文章

JAVA的模式对话框和非模式对话框

周末的时候,一位网友让我帮他把他的无模式对话框改成有模式对话框. 界面是有swing制作的,都是JFrame,我从来没有接触过swing编程.大致的代码还是看的懂,很多都和C#很相似. 然后就去查资料,JAVA的模式对话框是如何调用的.终于查到了需要用到JDialog类,JDialog的构造函数里可以指定是否是模式对话框. 1 public JDialog(Frame owner, String title, boolean modal) { 2 super(owner == null? Swi

MFC模式对话框与非模式对话框 消息处理顺序

对话框有两种创建方式:DoModal和Creat. 其中DoModal创建的是模态的对话框,而Creat创建的是非模态的对话框下面总结下他们的不同. 对于模态的对话框,在该对话框被关闭前,用户将不能在同一应用程序的其他地方进行工作(例如open file对话框),而对于非模态的对话框,在它留在屏幕上的同时可以在其他的地方进行工作,(例如find file对话框) Create的Dialog一般是modalless,如果你的程序本身就是只有一个Dialog,就无所谓了,看不出modalless的效

模式对话框与非模式对话框 消息处理顺序

对话框有两种创建方式:DoModal和Creat. 其中DoModal创建的是模态的对话框,而Creat创建的是非模态的对话框下面总结下他们的不同. 对于模态的对话框,在该对话框被关闭前,用户将不能在同一应用程序的其他地方进行工作(例如open file对话框),而对于非模态的对话框,在它留在屏幕上的同时可以在其他的地方进行工作,(例如find file对话框) Create的Dialog一般是modalless,如果你的程序本身就是只有一个Dialog,就无所谓了,看不出modalless的效

VC 模式对话框和非模式对话框的创建,销毁和区别

在WIN32中,模式对话框的创建一般是使用DialogBox来进行创建的.而非模式对话框则是利用CreateWindow来创建的.在MFC或是WTL中,模式对话框一般是使用DoModal,而非模式对话框的创建则是使用Create.模式对话框创建后,程序的其他窗口便不能进行操作,必须将该窗口关闭后,其他窗口才能进行操作.而非模式对话框则无需这样,它不强制要求用户立即反应,而是与其他窗口同时接受用户操作.Create的Dialog一般是modalless,如果你的程序本身就是只有一个Dialog,就

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

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

VC 无标题栏对话框移动(在OnLButtonDown里再次发送消息)

操作系统:Windows 7软件环境:Visual C++ 2008 SP1本次目的:实现无框移动 所谓的无标题栏对话框,是基于对话框的工程,对话框属性Border设置为None,对话框如下所示: 为对话框添加左键点击事件,代码如下: [cpp] view plain copy void CPlayerDlg::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 SendMessage(WM_SYSCO

JavaScript特效实例011-弹出全屏显示的网页模式对话框

实例011                    弹出全屏显示的网页模式对话框 实例说明 弹出全屏显示的网页模式对话框,用户关闭之前不能浏览网站的其他内容. 技术要点 本实例主要应用screen对象的width.height属性和window对象的showModalDialog()方法实现.其实还有一种方法打开网页对话框,即showModelessDialog()方法. 使用showModalDialog()与showModelessDialog()方法的区别在于,showModalDialog

MongoDB,无模式文档型数据库简介

MongoDB的名字源自一个形容词humongous(巨大无比的),在向上扩展和快速处理大数据量方面,它会损失一些精度,在旧金山举行的MondoDB大会上,Merriman说:“你不适宜用它来处理复杂的金融事务,如证券交易,数据的一致性可能无法得到保证”.若想了解更多关于MongoDB的信息,请看51CTO数据库频道推荐<MongoDB,无模式文档型数据库简介>. NoSQL数据库都被贴上不同用途的标签,如MongoDB和CouchDB都是面向文档的数据库,但这并不意味着它们可以象JSON(J

wxPython Modal Dialog模式对话框,Python对话框中打开对话框

今天用wxPython写一个输入关键词自动生成文章工具,设置部分需要用模式对话框来打开设置界面.下面介绍wxPython Modal Dialog模式对话框: 1. Modal Dialog(模式对话框) A modal dialog blocks other widgets from receiving user events until it is closed; in other words, it places the user in dialog mode for the durati