我在visual c ++中使用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;
答案 0 :(得分:0)
嘿,没有编译代码并运行它我可以在这里看到一个问题:
myframe()
{
Create(0,TEXT("Simple Dialog Box"),WS_OVERLAPPEDWINDOW,rectDefault,0,MAKEINTRESOURCE(IDR_MENU1));
}
使用IDR_MENU1
资源创建窗口的位置,这是一个菜单。这意味着您的应用程序的主窗口是菜单。
此外,整个代码看起来根本不是MFC-ish。我建议从Visual Studio模板创建一个MFC应用程序 - 它将为您正确设置主窗口。
答案 1 :(得分:0)
只有执行id为101的命令时才会显示该对话框。据推测,这将是与主窗口相关联的菜单项。如果您的菜单定义为:
IDR_MENU1 MENU
BEGIN
POPUP "HELP"
BEGIN
MENUITEM "About", ID_HELP_ABOUT
END
END
ID_HELP_ABOUT
定义为值101,然后当您选择该菜单项时,将调用您的about
函数,显示对话框。
我不确定你在这里想要实现什么,并且会在这里回应其他建议,说开始使用MFC向导生成的代码并从那里开始。