2009-09-07 75 views
0

我已經寫了下面的應用程序使用Visual C++中的MFC,其中包括兩個資源(一個菜單和一個對話框)(使用資源編輯器創建)...程序工作得很好,除了它只顯示一個資源,即。它只顯示菜單,但不顯示對話框... 做什麼? 這是代碼...在MFC程序中的對話框

#include<afxwin.h> 
#include"stdafx.h" 
#include"resource.h" 

class mydialog:public CDialog 
{ 
private: 
    int id; 

public: 
    mydialog(int n):CDialog(n) 
    { 
     id=n; 
    } 

    int OnInitDialog() 
    { 
     CDialog::OnInitDialog(); 
     if(id==IDD_DIALOG1) 
      CenterWindow(GetDesktopWindow()); 
     else 
      CenterWindow(); 
     return TRUE; 
    } 

    void OnOK() 
    { 
     CDialog::OnOK() ; 
     MessageBox(TEXT("You have Pressed the OK Button"),TEXT("OnOK handler")); 
    } 
}; 
class myframe:public CFrameWnd 
{ 
public: 
    myframe() 
    { 
     Create(0,TEXT("Simple Dialog Box"),WS_OVERLAPPEDWINDOW,rectDefault,0,MAKEINTRESOURCE(IDR_MENU1)); 
    } 
    void about() 
    { 
     mydialog d(IDD_DIALOG1); 
     d.DoModal(); 
    } 
    DECLARE_MESSAGE_MAP() 
}; 

BEGIN_MESSAGE_MAP(myframe,CFrameWnd) 
ON_COMMAND(101,about) 
END_MESSAGE_MAP() 

class myapp:public CWinApp 
{ 
public: 
    int InitInstance() 
    { 
     myframe *p; 
     p=new myframe; 
     p->ShowWindow(3); 
     m_pMainWnd=p; 
     return 1; 
    } 
}; 
myapp a; 
+1

它看起來像你想學習MFC?我的一般建議是從Visual C++裏面的嚮導開始。它會爲你製作一些空的項目,你可以和那些人一起玩,看看他們是如何工作的。 我不清楚這段代碼試圖完成什麼,或者你期望發生什麼。如果你在「我想做X,但是這個代碼是Y」的方式中提出你的問題,你可能會得到更好的答案。 – 2009-09-07 06:07:37

回答

0

嘿,無需編譯代碼並運行它,我可以在這裏看到一個問題:

myframe() 
{ 
    Create(0,TEXT("Simple Dialog Box"),WS_OVERLAPPEDWINDOW,rectDefault,0,MAKEINTRESOURCE(IDR_MENU1)); 
} 

在其中創建使用IDR_MENU1資源這是一個窗口菜單。這意味着你的應用程序的主窗口是菜單。

此外,整個代碼根本看不到MFC-ish。我建議從Visual Studio模板創建一個MFC應用程序 - 它會爲您正確設置主窗口。

+0

不,這裏的IDR_MENU1參數告訴窗口使用該資源作爲窗口的菜單,所以這不是問題。 – 2009-09-07 10:26:05

+0

啊,當然,你是對的。 – 2009-09-07 12:17:13

0

該對話框只有在執行ID爲101的命令時纔會顯示。據推測,這將是一個與主窗口關聯的菜單項。如果您的菜單被定義爲:

IDR_MENU1 MENU 
BEGIN 
    POPUP "HELP" 
    BEGIN 
     MENUITEM "About", ID_HELP_ABOUT 
    END 
END 

而且ID_HELP_ABOUT與和值101,那麼當你選擇該菜單項的about功能將被調用定義,顯示該對話框。

我不確定你在這裏試圖達到什麼目的,並且會在這裏迴應其他建議,說出從MFC嚮導生成的代碼開始,並從此處獲取它。