zoukankan      html  css  js  c++  java
  • 在单文档中显示我的第一个对话框

    在单文档中显示我的第一个对话框

      (2010-04-19 21:19:50)
    标签: 

    it

     

    今天编写了在单文档中创建对话框以及调用对话框的代码,收获很多;

    1:OnInitDialog函数的加载问题尤其是在VS上的加载;(这一点花了很长时间才查到资料)

    OnInitDialog()函数是个virtual(虚函数),在它的类中用添加虚

    函数的方法,会发现添加的虚函数里面没有这个函数,而这个

    OnInitDialog函数是很有用的,在一般的添加进去的对话框的类中

    是不会有这个函数的,必须手工增加进去,当然不用手工写代码,手

    动添加时可能会出错.可以通过VC加进去,而要加的这个函数的名

    字不是OnInitDialog,所以很难找到.其原因是因为要加的函数是

    WM_INITDIALOG.


    这个函数的添加方法是这样的,选择要加入函数的对话框,右键-

    >ClassWiZard(类向导)->Message Maps(消息映射),对象里面选择

    对话框,Messages(消息)里面选择WM_INITDIALOG,然后点Add

    Function(增加函数),这样就映射到类中去了,它的函数名称是

    OnInitDialog,而不是WM_INITDIALOG.这时可以点Edit Fuction,

    编辑函数了.

          Visual studio   没有旧风格class wizard了。所以无

    像VC6.0那样添加oninitdialog函数。其方法是:首先添加

    CDialog对话框的类,方法是可以在对话框点右键,在右键菜

    单里点Add Class,然后打开刚才添加的类的头文件,在头文

    件的类的声明区里按F4调出属性窗口,在属性窗口的工具栏里

    找到Overrides点击它会切换到重写方法列表界面,在这个列

    表里找到OnInitDialog,点后面的下拉组合框就有添加

    OnInitDialog了,点一下就可以把这个方法重写到你的程序里

    了。

    还有两个要注意的问题是:

    一个是:子对话框添加类后,打开此类的头文件,注意了:一定

    要确认鼠标光标处于类声明的区域,这个时候再打开属性窗口,

    点击工具栏上的Overrides(重写),里面可以找到

    OnInitDialog.

    如果鼠标没处在类声明的区域,属性窗口就显示的是当前头文件

    的属性,工具栏是不会有Overrides(重写)这一项的。

    另一个是:

    ADD Class后 要在左边文件列表上面选择 show all files (显示所有文件)后 再打

    开添加的类的头文件 ....这样才行的 .......

    就是你为子对话框添加完类后,在vs的左边文件列表上选择show all files。
    然后点击进去你添加的类的头文件。这时在(一般)右边的属性窗口里
    会有一个图标(Overrides)点击它

    2:由“在程序中调用对话框”所学习到的;

    不同的域对应不同的头文件以及执行文件,eg:菜单中测试对话框对应的头文件就是MainFrm.h对应的执行文件是MainFrm.cpp而对于对话框中的控件对应的就是FirstDlg.h以及FirstDlg.cpp.

    3:连接包含问题

    当主菜单要与对话框进行连接时,在OnTestDlg函数的实现文件MainFrm.cpp的前面添加CFirstDlg类的包含语句:#include "FirstDlg.h"进行连接;

    代码:

    ##include "FirstDlg.h"

    void CMainFrame::OnTestDlg()
    {
     // TODO: 在此添加命令处理程序代码
     CFirstDlg dlg;  //定义对话框类对象;
     dlg.DoModal();//显示对话框;
    }

    BOOL CFirstDlg::OnInitDialog()
    {
     CDialog::OnInitDialog();

     // TODO:  在此添加额外的初始化
        CStatic *pWnd=(CStatic*)GetDlgItem(IDC_STATIC1);
     pWnd->SetWindowTextW(_T("这是我的第一个对话框"));
     return TRUE;  // return TRUE unless you set the focus to a control
     // 异常: OCX 属性页应返回 FALSE
    }在单文档中显示我的第一个对话框

  • 相关阅读:
    Python time gmtime()方法
    背包DP整理
    hdu 1561 The more, The Better
    Eclipse无法打开提示could not open jvm.cfg错误
    Http协议
    反射类
    xml——dom&sax解析、DTD&schema约束
    XML、DTD约束
    java——final、权限修饰符
    java——接口、多态性、对象转型
  • 原文地址:https://www.cnblogs.com/jack-jia-moonew/p/4256414.html
Copyright © 2011-2022 走看看