没学过MFC。比如说点击了主窗口上的一个按钮,要弹出另一个新的窗口,窗口是工程中绘制的(例如是IDD_DIALOG1),按钮这边的代码怎么写,绘制好了的那个窗口在主程序中怎么写,然后怎么把它们关联起来。

解决方案 »

  1.   

    比如A主窗口上按钮B,点击后要打开子窗口C。可以在B按钮响应事件下写上, CDlg D; D.DoModal();
      

  2.   

    1.打开Modal对话框
     
      CResultDlg dlg;
      dlg.DoModal();2.打开非Modal对话框
      CTestDlg* pWnd=(CTestDlg*)AfxGetMainWnd();
     ASSERT_VALID(pWnd);    //定义父窗口指针pWnd
     CResultDlg* dlg;
     dlg=new CResultDlg(pWnd);//堆分配非模态对话框内存空间
     dlg->Create(IDD_RESULT_DIALOG,pWnd);
     dlg->ShowWindow(SW_SHOW);
      

  3.   

    先给要弹出的子窗口创建一个类,右键那个窗口菜单里面就有,例如创建C**Dlg类。然后在按钮点击事件中增加C**Dlg dlg; dlg.DoModel();
      

  4.   

    在资源管理器里面打开主窗口,在需要弹新窗口的按钮上右击,选Event,然后在左边的窗口里选BN_CLICKED,最右边再点“Add and Edit”,就进入该按钮的响应函数了。窗口一般用对话框形式,那么然后就参考2楼。要使两者联系起来,简单的可以用全局变量,要不然可以用类的成员变量等等方式,比较关键一点的是对模态对话框、非模态对话框的理解,再注意下类成员变量的生存周期这些。
      

  5.   

    SendMessage(sSButtonAddHwnd,WM_SETFONT,(WPARAM)hfont,MAKELPARAM(TRUE,0));   其中sSButtonAddHwnd 是这个按钮,
    而我在工程中绘制的是一个 窗口IDD_DIALOG1 ,我用了一个 LRESULT CALLBACK AreaSetProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam )
    来对这个窗口做了一些处理,
    现在我就是想知道,怎样才能在我点击了“sSButtonAddHwnd”这个按钮之后关联到窗口IDD_DIALOG1
      

  6.   

    直接在LRESULT CALLBACK SetProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam )
    中处理WM_COMMAND中的按钮,(sSButtonAddHwnd这个按钮的ID),判断if(CreateDialog(hInstance,MAKEINTRESOURCE(IDD_DIALOG_ADD_AREA),hwnd,AreaSetProc))就关联到BOOL CALLBACK AreaSetProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam )我这里是在一个窗口过程中有个按钮,然后点击这个按钮打开到我在资源中绘制的窗口