提供有价值的信息都给分~

heku518 2008-05-27 02:50:19
我现在有三个窗体,其中一个窗体有Combobox这个控件,
另外两个窗体共用这个带有Combobox控件的窗体,
怎么去判断它选中的是哪个窗体,然后Combobox的内容做相应的改变.
比如:
选择Form1的话,那么Combobox的内容为a,b,c,d
而选择Form2的话,那么Combobox的内容为a,b,c,d,e,f
该怎么实现呢?
...全文
136 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
51365133 2008-05-28
  • 打赏
  • 举报
回复
留个mail,昨天做了个demo发给你.
andy_cai 2008-05-27
  • 打赏
  • 举报
回复
用postmessage或者sendmessage
51365133 2008-05-27
  • 打赏
  • 举报
回复
void CComboDlg::OnButton1() 
{
// TODO: Add your control notification handler code here
dd1->SethWnd(this->m_hWnd);

dd1->ShowWindow(SW_SHOW);
}

void CComboDlg::OnButton2()
{
// TODO: Add your control notification handler code here
dd2->SethWnd(this->m_hWnd);

dd2->ShowWindow(SW_SHOW);
}

void CComboDlg::OnDestroy()
{
CDialog::OnDestroy();

// TODO: Add your message handler code here
dd1->DestroyWindow();
dd2->DestroyWindow();
}

void CComboDlg::OnRefresh(WPARAM wParam, LPARAM lParam)
{
int n=(int)wParam;

while(this->m_comb.GetCount()>0)
m_comb.DeleteString(0);

if(n==1)
{
this->m_comb.AddString("1");
this->m_comb.AddString("2");
this->m_comb.AddString("3");
this->m_comb.AddString("4");
}
else
{
this->m_comb.AddString("a");
this->m_comb.AddString("b");
this->m_comb.AddString("c");
this->m_comb.AddString("d");
this->m_comb.AddString("e");
}
}
BOOL CComboDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}

// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here

dd1 =new Dlg1(this);
dd2 =new Dlg2(this);


dd1->Create(IDD_DIALOG1);

dd2->Create(IDD_DIALOG2);

return TRUE; // return TRUE unless you set the focus to a control
}

----------------------------------------------------
void Dlg1::OnButton1()
{
// TODO: Add your control notification handler code here
::SendMessage(hWnd,WM_REFRESH,(WPARAM)1,0);
}

void Dlg1::SethWnd(HWND hWnd)
{
this->hWnd=hWnd;
}
-------------------------------------------------------
void Dlg2::OnButton1()
{
// TODO: Add your control notification handler code here
::PostMessage(hWnd,WM_REFRESH,(WPARAM)2,0);
}

void Dlg2::SethWnd(HWND hWnd)
{
this->hWnd=hWnd;
}
ouyh12345 2008-05-27
  • 打赏
  • 举报
回复
不麻烦啊
把要显示的东西放在参数里
heku518 2008-05-27
  • 打赏
  • 举报
回复
3个窗口本来就是三个类啊!最主要的是发送消息很麻烦啊!而且我有6个窗口共用一个窗口,上面只是假设3个窗口。
zwspider 2008-05-27
  • 打赏
  • 举报
回复
问题抽象一下:
你可以把3个窗口看作3个类, CWinA, CWinB, CWinC
而类CWinA有成员m_Combobox
这样问题变成了类CWinB和CWinC如何改变类CWinA的成员Combobox
解决方法不就是,类CWinB和CWinC给类CWinA发送消息么?, 也就是调用CWinA的成员函数~~~

xkyx_cn 2008-05-27
  • 打赏
  • 举报
回复
你是用VB编程?
Zhentiwei 2008-05-27
  • 打赏
  • 举报
回复
你在Combobox控件的窗体上弄一个静态全局变量,
然后Form1和Form2修改这个值,行不行?
heku518 2008-05-27
  • 打赏
  • 举报
回复
完全没有头绪~
51365133 2008-05-27
  • 打赏
  • 举报
回复
或者 带有Combobox控件的窗体 show的时候传入参数.
51365133 2008-05-27
  • 打赏
  • 举报
回复
Form1 Form2 不同窗体发送(Combobox)不同的消息不就可以了.
heku518 2008-05-27
  • 打赏
  • 举报
回复
有代码没??
提供一些参考代码吧!
ouyh12345 2008-05-27
  • 打赏
  • 举报
回复
我现在有三个窗体,其中一个窗体有Combobox这个控件,
另外两个窗体共用这个带有Combobox控件的窗体,

另外两个窗体获得第一个窗体的指针,得到焦点后,向第一个窗体发消息,改变Combobox控件的内容

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧