VC弹出对话框内容显示的问题(MFC)

建立一个基于对话框的MFC应用程序,主对话框A上有一个菜单,实现弹出一个新对话框B的功能,对话框B上有一个combobox控件,但在对话框B的类中初始化函数对combob... 建立一个基于对话框的MFC应用程序,主对话框A上有一个菜单,实现弹出一个新对话框B的功能,对话框B上有一个combobox控件,但在对话框B的类中初始化函数对combobox控件内容添加不显示。
注:不是combobox控件下拉长度不够的问题。且对主对话框A进行相同操作,内容可以显示。

对话框B类的定义信息:
#if !defined(AFX_CHOOSEDLG_H__46077809_3A06_454E_AD6C_A6086F6DC0E0__INCLUDED_)
#define AFX_CHOOSEDLG_H__46077809_3A06_454E_AD6C_A6086F6DC0E0__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// CHOOSEDlg.h : header file
//

/////////////////////////////////////////////////////////////////////////////
// CCHOOSEDlg dialog

class CCHOOSEDlg : public CDialog
{
// Construction
public:
CCHOOSEDlg(CWnd* pParent = NULL); // standard constructor

// Dialog Data
//{{AFX_DATA(CCHOOSEDlg)
enum { IDD = IDD_START_CHOOSE };
CComboBox m_combobox;
// NOTE: the ClassWizard will add data members here
//}}AFX_DATA

// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CCHOOSEDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL

// Implementation
protected:

// Generated message map functions
//{{AFX_MSG(CCHOOSEDlg)
virtual BOOL OnInitDialog();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_CHOOSEDLG_H__46077809_3A06_454E_AD6C_A6086F6DC0E0__INCLUDED_)

对话框B类的内容:
// CHOOSEDlg.cpp : implementation file
//

#include "stdafx.h"
#include "V3.h"
#include "CHOOSEDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CCHOOSEDlg dialog

CCHOOSEDlg::CCHOOSEDlg(CWnd* pParent /*=NULL*/)
: CDialog(CCHOOSEDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CCHOOSEDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}

void CCHOOSEDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCHOOSEDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
DDX_Control(pDX, IDC_COMBO1, m_combobox);
//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CCHOOSEDlg, CDialog)
//{{AFX_MSG_MAP(CCHOOSEDlg)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCHOOSEDlg message handlers

BOOL CCHOOSEDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_combobox.AddString("test1");
m_combobox.AddString("test2");
m_combobox.SetCurSel(0);

// TODO: Add extra initialization here

return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
combobox控件中不显示“test1”、“test2”两行。
对话框A菜单中实现弹出对话框B命令为:
void CV3Dlg::OnStatusStart()
{
// TODO: Add your command handler code here
CDialog start(IDD_START_CHOOSE);
start.DoModal();
}

直接在对话框A中添加combobox控件,初始化添加信息可以显示。
展开
 我来答
百度网友827e49f
2009-05-18 · TA获得超过233个赞
知道小有建树答主
回答量:176
采纳率:0%
帮助的人:152万
展开全部
void CV3Dlg::OnStatusStart()
{
// TODO: Add your command handler code here
CDialog start(IDD_START_CHOOSE);
start.DoModal();
}
你这里有问题。你把
IDD_START_CHOOSE绑定到了CDialog类的对象。而你的初始化在
BOOL CCHOOSEDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_combobox.AddString("test1");
m_combobox.AddString("test2");
m_combobox.SetCurSel(0);

也就是说,你要是用CDialog start(IDD_START_CHOOSE);
这句,你的下拉例表控件跟本就没有初始化。明白?要用楼上几位说的方法才能显示出来控件。希望你明白我说的话了。
例如一楼说的:
CBDlg dlg;
if(dlg.DoModal()==IDOK)
{
//do what you want
}
广之东周
2009-05-17 · TA获得超过540个赞
知道小有建树答主
回答量:746
采纳率:0%
帮助的人:0
展开全部
你在对话框A中怎么创建B对话框的,我试过了没你所说的情况,可以正常显示
CBDlg dlg;
if(dlg.DoModal()==IDOK)
{
//do what you want
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lonia3390
2009-05-18 · TA获得超过402个赞
知道小有建树答主
回答量:136
采纳率:0%
帮助的人:241万
展开全部
菜单中对话框的弹出调用有问题,要弹出的对话框是CCHOOSEDlg类,你加入的初始化代码是在父类CCHOOSEDlg中完成的,在调用时用的却是它的基类CDialog,这样虽然不会有编译错误,但实现不了预期的目标。应该是这样:
CCHOOSEDlg start;
start.DoModal();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
千里牛马
2009-05-17 · TA获得超过127个赞
知道答主
回答量:103
采纳率:0%
帮助的人:0
展开全部
菜单下的调用函数是这样的吗?
B dlg;
dlg.domodal();
要是这样的话,你的代码没问题,应该能显示的.
另外菜单最好跟APP类关联起来.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式