在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;
嘿,无需编译代码并运行它,我可以在这里看到一个问题:
myframe()
{
Create(0,TEXT("Simple Dialog Box"),WS_OVERLAPPEDWINDOW,rectDefault,0,MAKEINTRESOURCE(IDR_MENU1));
}
在其中创建使用IDR_MENU1
资源这是一个窗口菜单。这意味着你的应用程序的主窗口是菜单。
此外,整个代码根本看不到MFC-ish。我建议从Visual Studio模板创建一个MFC应用程序 - 它会为您正确设置主窗口。
不,这里的IDR_MENU1参数告诉窗口使用该资源作为窗口的菜单,所以这不是问题。 – 2009-09-07 10:26:05
啊,当然,你是对的。 – 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向导生成的代码开始,并从此处获取它。
它看起来像你想学习MFC?我的一般建议是从Visual C++里面的向导开始。它会为你制作一些空的项目,你可以和那些人一起玩,看看他们是如何工作的。 我不清楚这段代码试图完成什么,或者你期望发生什么。如果你在“我想做X,但是这个代码是Y”的方式中提出你的问题,你可能会得到更好的答案。 – 2009-09-07 06:07:37