动态对话框类 这些类被用来显示一个模态对话框/上一次,上 动态添加控件,不需要有一个对话框 模板资源。这些类作为基类使用 在脚本解析器,用户可以建立自己的对话框,使用 vb脚本语言。所以基本上可以有任意数量的控制 对话框,在对话框上的任何地方。 全球CDynDialogEx类的结构: CDialog类派生 班上有一个CDynDialogItemEx数组 指针,控件的对话框 类包括DoDataExchange()函数。 将控件添加到对话框中通过AddDlgControl()函数 全球CDynDialogItemEx类的结构: CWnd类派生 保存的数据添加到对话框控制,像 标题、矩形等。 创建对话框上的控件 小块示例代码如何使用classesHide,收缩,复制Code
void CTestDynDialogDlg::OnButton1(); { int nRadio1 = 0; //Create a rectangle in dialog units, where the control should be placed CRect rect(10,5,60,19); CDynDialogEx dlg(this); //create the dynamic dialog, using this as parent window dlg.SetWindowTitle(_T("Dynamic Dialog : WindowTitle.....")); //Add a button control at the given position dlg.AddDlgControl(_T("BUTTON"), // Type of control OR classname of the control _T("Press me!"), // Caption of control STYLE_BUTTON, // dwStyle of control EXSTYLE_BUTTON, // dwStyleEx of control &rect, // Position of control on dialog in dialog units, default = NULL NULL, // void pointer to variable use for DDX, default = NULL IDC_DYN_BUTTON); // ID of the contol, default = zero //Add a group of radio buttons //variable nRadio1 is used for DDX dlg.AddDlgControl(_T("BUTTON"), _T("Radio1Caption 1"), STYLE_RADIO_GROUP, EXSTYLE_RADIO, NULL, (void*)&nRadio1); dlg.AddDlgControl(_T("BUTTON"), _T("Radio1Caption 2"), STYLE_RADIO, EXSTYLE_RADIO); //Now show me the dialog dlg.DoModal() }
解释工作 CDynDialogEx: AddDlgControl()函数创建新的 CDynDialogItemEx类的对象,并将其添加到数组中 的控制。函数还检查/设置对话框的大小,所以 控制是在对话框。 CDynDialogEx: DoModal()函数初始化 DLGTEMPLATE结构使用选定的字体和调用 CDialog: InitModalIndirect()模态对话框或 CDialog: CreateIndirect比较对话框() CDynDialogEx: OnCreate()函数创建的所有 控制对话框 CDynDialogItemEx: CreateEx()没有(ActiveX控件) 或创建窗口 CDynDialogEx: OnInitDialog复位()函数 所有对话框上的控件或创建ActiveX控件 CDynDialogItemEx: SetWindowPos()函数转换 对话框屏幕单位单位并创建ActiveX控件 更新18-06-2002 来自CWnd类CDynDialogItemEx现在而不是拔CWnd成员 添加比较gialog CodeBuddy所认为的可能性。(CDynDialogEx:: SetUseModeless ()) 添加控件子类化,因为我需要他们。后添加控制可以使用 与调用返回的Control_ID SubclassDlgItem CDynDialogEx: AddSubclassedDlgControl () 改进的DDX_Control支持对话框条目 添加部分ActiveX控件的支持。部分,因为创建控件,但 不支持EVENT_SINK !但有代码用于创建授权控制构建。 添加示例非模态的对话框中,添加和填充CListbox, 一个ActiveX控件在对话框 提示! 将这段代码与保罗·梅西纳的文章CResizableDialog的代码 可能的扩展: 改善ActiveX控件支持,特别是EVENT_SINK相关 动态菜单添加到对话框 … 本文转载于:http://www.diyabc.com/frontweb/news6929.html