如何在对话框中弹出SDI框架并操作它,最好能给个实例,谢谢

解决方案 »

  1.   

    http://www.codeguru.com/Cpp/W-D/dislog/article.php/c5007
      

  2.   

    请楼主说明白点,是点了对话框上的某一控件后出现SDI框架吗?
    这是还需要对话框不?
      

  3.   

    是点了对话框的按钮后弹出SDI框架,谢谢
      

  4.   

    http://www.codeguru.com/cpp/w-d/dislog/article.php/c5009/
      

  5.   

    如果仅仅是在SDI框架出现之前先显示一个对话框然后才出现SDI框架就很简单
    (如果我说骗了的,不要m我)。
        比如在进入系统前出现一个密码验证对话框,验证成功就进入系统显示SDI框
    架,否则返回错误信息!
        具体操作如下:
    1.新建一个对话框类CDlg_denglu,该类有一个成员变量m_flag(BOOL类型,初始化
    为FALSE) 对话框有“登录(IDOK)”和“退出(IDCANCEL)”两个按钮,有两个CEdit
    控件(绑定变量分别为 m_name和 m_password,一个为用户名,一个为密码)。在
    Dlg_denglu.cpp里设置按钮响应函数
      void CDlg_before::OnCancel()
     {
    CDialog::OnCancel();
     } void CDlg_before::OnOK() 
     {
    UpdateData(TRUE);

    if(m_name=="你的用户名"&&m_password=="你的密码")
    {
    m_flag=TRUE;
    CDialog::OnOK();
    }
    else
    AfxMessageBox("非安全用户不能使用该系统!");

    }
    2.在App文件里相应的位置增加相应的代码
           #include "Dlg_denglu.h"
           BOOL CStep_studyApp::InitInstance()
           {
    ..........................
            ..........................
            .......................... SetRegistryKey(_T("Local AppWizard-Generated Applications"));
    LoadStdProfileSettings();  // Load standard INI file options (including MRU)
            
            CDlg_before bDlg;
    bDlg.DoModal();
    if(!bDlg.m_flag)
    return FALSE;
    CSingleDocTemplate* pDocTemplate;
    pDocTemplate = new CSingleDocTemplate(
    IDR_MAINFRAME,
    RUNTIME_CLASS(CStep_studyDoc),
    RUNTIME_CLASS(CMainFrame),       // main SDI frame window
    RUNTIME_CLASS(CStep_studyView));
    ........................
            ........................
            ........................
            }
      

  6.   

    当然不是楼上说的,我的程序本来就是对话框程序,现在要一个SDI框架来管理一些东西,是在任一对话框中按一个按钮都能调出SDI框架
      

  7.   

    你提到的问题其实很简单,只是没有理解windows的窗口概念而已。
    windows大到桌面,小到控件,全部是窗口。
    如果你想要在点击一个按钮的时候,弹出出另一个窗口处理。
    只需要注册一个窗口类。参见RegisterClass或RegisterClassEx函数
    用这个窗口类创建一个窗口,参见CreateWindow或CreateWindowEx函数
    显示这个窗口,参见ShowWindow函数
    更新这个窗口,参见UpdateWindow函数如果你使用MFC可以更简单,参考
    AfxRegisterWndClass
    CWnd::Create和CWnd::CreateEx
    等函数如果需要在任务栏上显示任务,则父窗口应该为NULL或GetDesktopWindow()
    如果为NULL,窗口为正常的普通窗口。
    GetDesktopWindow()则窗口不接受焦点。