在MFC程序中的对话框

在MFC程序中的对话框

问题描述:

我已经写了下面的应用程序使用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

嘿,无需编译代码并运行它,我可以在这里看到一个问题:

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

该对话框只有在执行ID为101的命令时才会显示。据推测,这将是一个与主窗口关联的菜单项。如果您的菜单被定义为:

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

而且ID_HELP_ABOUT与和值101,那么当你选择该菜单项的about功能将被调用定义,显示该对话框。

我不确定你在这里试图达到什么目的,并且会在这里回应其他建议,说出从MFC向导生成的代码开始,并从此处获取它。