怎样得到CComboBox的选项? 我在一个对话框中加了一个CComboBox,可是在View中执行对话框的DoModel()之后,想在判断对话框返回的值为IDOK时,得到那个CComboBox的当前选项和文本,可是得到的CComboBox为空,我应该怎么做呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那个CComboBox已经在对话框类中用DDX映射了一个变量了。 在OnSelChange消息中CString aa;m_combo2.GetLBText(m_combo2.GetCurSel(),aa);m_combo2是与你控件相连的控件类型变量 如果你的对话框管理类为CYouDlg与 CCombobox进行DDX的CString 为 m_strcmb那么你可以CYouDlg dlg;if(dlg.DoModal() == Idok){ MessageBox(dlg.m_strcmb);} faint!本人写了一大坨,居然没显示出来!!!算了,简而言之if(dlg.domodal() == idok) Messagebox(dlg.m_strCmb); 这是在对话框类里吧!可是我想在View里得到,能办到么?是不是点击确定之后,就无法得到那个CComboBox了? 没看到我的吗?你还可以给你的combo加一个CString成员变量然后在OnOK时UpdateData(TRUE);不过只能得到用键盘打进去的值。要和上面我说的方法结合用才能有满意的效果。 先在对话框类的OnSelChange()里做一个全局变量保存GetLBText()取得的ComboBox的当前字符串,然后要在哪里显示就可以在哪里显示啦 您首先在确定的在 EndDialog(IDOK);之前还是之后你获取其中的数据?如果你在职 DOMODAL()结束后再调用COMMBOX 则不对访问它只能在它的生存期内。如果在对话框显示时,在ENDDIALOG之前则你可以用以下几种方法获了取设你的COMBOX的ID为IDCCOMBOX1。 为你的IDCCOMBOX加一个变量 (按住CTRL 再用鼠标双击你的COMMBOX,在弹出的对话框中加入你的变量,如果是只能选择类型只能加数字型变量,如果为可选并可编辑的则只能加入字符串类型的)2。 GetDlgItemText(int nID,CString &rString)3。关于COMBOX我的一个用法,本不外传的 —) 这种方法可获取选中了第几个,选中的字符为什么 STEP1。 设定COMBOX为只选类型 STEP2。 为它添加一个INT的变量 STEP3。 再改COMBOX的类型为DROPDOWN可编辑的 STEP4。 再为它再加一个STRING变量 STEP5。 再修改为程式要用的模式 STEP6。 在用户点击了OK后 UPDATEDATA(); STEP7。 使用上面添加的变量就可以了,在退出DAILOG后还可以使用这两个变量。 我想直接得到选项和数据,就像这样:if(dlg.domodal() == idok){ int i=dlg.m_strCmb.GetCurSel(); <-这里执行非法操作,这是为什么? 然后得到文本 addrec.Food_Name.GetLBText(i,myStr);} //加入对话框资源,利用ClassWizard新建一对话框类CMyDlg,还利用ClassWizard添加CComboBox m_cCombo,//CString m_strCombo两个变量;//在CView中,定义一CMyDlg指针,响应响应菜单命令时,新建CMyDlg实例,调用DoModal方法,//m_strCombo就是ComboBox中所选内容//**********************MyDlg.h*****************************class CMyDlg : public CDialog{public: CString m_strCombo; CComboBox m_cCombo; virtual BOOL OnInitDialog();}//**********************MyDlg.cpp*****************************// CMyDlg 消息处理程序BOOL CMyDlg::OnInitDialog(){ CDialog::OnInitDialog(); // TODO: 在此添加额外的初始化 m_cCombo.AddString("1"); m_cCombo.AddString("2"); m_cCombo.AddString("3"); m_cCombo.AddString("4"); return TRUE; // return TRUE unless you set the focus to a control}//**********************testViewDlgView.h*****************************class CMyDlg;class CtestViewDlgView : public CView{// 属性public: CMyDlg* pMyDlg;}//**********************testViewDlgView.cpp*****************************#include "MyDlg.h"CtestViewDlgView::CtestViewDlgView(){ pMyDlg=NULL;}CtestViewDlgView::~CtestViewDlgView(){ if(pMyDlg) delete pMyDlg;}//响应菜单命令void CtestViewDlgView::OnDlg(){ // TODO: 在此添加命令处理程序代码 pMyDlg=new CMyDlg(); if(pMyDlg) { pMyDlg->DoModal(); CString aa=pMyDlg->m_strCombo; AfxMessageBox("your select is "+ aa); }} Saimen(全拼) :我强行加入了两个变量:int ,CString在DDX中有映射,都映射到一个CComboBox,编译过去了,但CComboBox有点问题,下拉列表拉不下来,我用的是VC.net,是不是因为这点呢? //响应菜单命令void CtestViewDlgView::OnDlg(){ // TODO: 在此添加命令处理程序代码 pMyDlg=new CMyDlg(); if(pMyDlg) { if(pMyDlg->DoModal()==IDOK) { CString aa=pMyDlg->m_strCombo; AfxMessageBox("your select is "+ aa); } }} 用ClassWizard添加CComboBox m_cCombo,CString m_strCombo两个变量;我用的也是VC.net,NO PROBLEM! Lemon_2000(柠檬):我怎么得到选择的位置呢? 用DDX映射了两个变量:控件变量CComboBox m_cCombo 用来添加可选项,字符变量CString m_strCombo用来存放已选项 自定义类成员变量int m_nIndex在OnSelChange消息中m_nIndex=m_cCombo.GetCurSel();在CView中pMyDlg—>m_nIndex就是选择的位置 alphapiao(叶飘飞) :我想在我的View里得到,就像这样:if(dlg.domodal() == idok) int i=dlg.m_strCmb.GetCurSel(); 然后再得到文本。 Lemon_2000(柠檬) :谢谢,我先试试! 请教windows api一日一练中的问题 tree ctrol 边框拖动,改变大小 没有分怎么办? 请问这个操作用VC可以实现吗? 送分 日期时间转成秒数 急!急!急!如何通过收到的udp包,获得对方的ip地址? 我的键盘钩子与输入法冲突,怎么办? 编译出现奇怪 ATL 重命名错误 LINK : warning LNK4089: all references to "OLEAUT32.dll" discarded by /OPT:REF 请教个问题 怎么用VC编写驱动程序? ado+sql
CString aa;
m_combo2.GetLBText(m_combo2.GetCurSel(),aa);
m_combo2是与你控件相连的控件类型变量
与 CCombobox进行DDX的CString 为 m_strcmb
那么你可以
CYouDlg dlg;
if(dlg.DoModal() == Idok)
{
MessageBox(dlg.m_strcmb);
}
if(dlg.domodal() == idok)
Messagebox(dlg.m_strCmb);
你还可以给你的combo加一个CString成员变量
然后在OnOK时
UpdateData(TRUE);
不过只能得到用键盘打进去的值。
要和上面我说的方法结合用才能有满意的效果。
1。
为你的IDCCOMBOX加一个变量
(按住CTRL 再用鼠标双击你的COMMBOX,在弹出的对话框中加入你的变量,如果是只能选择类型只能加数字型变量,如果为可选并可编辑的则只能加入字符串类型的)
2。
GetDlgItemText(int nID,CString &rString)3。关于COMBOX我的一个用法,本不外传的 —)
这种方法可获取选中了第几个,选中的字符为什么 STEP1。 设定COMBOX为只选类型
STEP2。 为它添加一个INT的变量
STEP3。 再改COMBOX的类型为DROPDOWN可编辑的
STEP4。 再为它再加一个STRING变量
STEP5。 再修改为程式要用的模式 STEP6。 在用户点击了OK后
UPDATEDATA(); STEP7。
使用上面添加的变量就可以了,在退出DAILOG后还可以使用这两个变量。
if(dlg.domodal() == idok)
{
int i=dlg.m_strCmb.GetCurSel(); <-这里执行非法操作,这是为什么?
然后得到文本
addrec.Food_Name.GetLBText(i,myStr);
}
//加入对话框资源,利用ClassWizard新建一对话框类CMyDlg,还利用ClassWizard添加CComboBox m_cCombo,
//CString m_strCombo两个变量;
//在CView中,定义一CMyDlg指针,响应响应菜单命令时,新建CMyDlg实例,调用DoModal方法,
//m_strCombo就是ComboBox中所选内容//**********************MyDlg.h*****************************
class CMyDlg : public CDialog
{
public:
CString m_strCombo;
CComboBox m_cCombo;
virtual BOOL OnInitDialog();
}
//**********************MyDlg.cpp*****************************// CMyDlg 消息处理程序BOOL CMyDlg::OnInitDialog()
{
CDialog::OnInitDialog(); // TODO: 在此添加额外的初始化
m_cCombo.AddString("1");
m_cCombo.AddString("2");
m_cCombo.AddString("3");
m_cCombo.AddString("4"); return TRUE; // return TRUE unless you set the focus to a control
}//**********************testViewDlgView.h*****************************
class CMyDlg;
class CtestViewDlgView : public CView
{
// 属性
public: CMyDlg* pMyDlg;
}
//**********************testViewDlgView.cpp*****************************
#include "MyDlg.h"CtestViewDlgView::CtestViewDlgView()
{
pMyDlg=NULL;}CtestViewDlgView::~CtestViewDlgView()
{
if(pMyDlg)
delete pMyDlg;
}//响应菜单命令
void CtestViewDlgView::OnDlg()
{
// TODO: 在此添加命令处理程序代码
pMyDlg=new CMyDlg();
if(pMyDlg)
{
pMyDlg->DoModal();
CString aa=pMyDlg->m_strCombo;
AfxMessageBox("your select is "+ aa);
}
}
我强行加入了两个变量:int ,CString
在DDX中有映射,都映射到一个CComboBox,
编译过去了,但CComboBox有点问题,下拉列表拉不下来,我用的是VC.net,是不是因为这点呢?
void CtestViewDlgView::OnDlg()
{
// TODO: 在此添加命令处理程序代码
pMyDlg=new CMyDlg();
if(pMyDlg)
{
if(pMyDlg->DoModal()==IDOK)
{
CString aa=pMyDlg->m_strCombo;
AfxMessageBox("your select is "+ aa);
}
}
}
我用的也是VC.net,NO PROBLEM!
我怎么得到选择的位置呢?
m_nIndex=m_cCombo.GetCurSel();在CView中
pMyDlg—>m_nIndex就是选择的位置
我想在我的View里得到,
就像这样:
if(dlg.domodal() == idok)
int i=dlg.m_strCmb.GetCurSel();
然后再得到文本。
谢谢,我先试试!