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
    }在单文档中显示我的第一个对话框

  • 相关阅读:
    jsp转向
    什么是 XDoclet?
    tomcat中的几点配置说明
    mysql5问题
    POJ 3734 Blocks
    POJ 2409 Let it Bead
    HDU 1171 Big Event in HDU
    POJ 3046 Ant Counting
    HDU 2082 找单词
    POJ 1286 Necklace of Beads
  • 原文地址:https://www.cnblogs.com/jack-jia-moonew/p/4256414.html
Copyright © 2011-2022 走看看