vc6.0 如何在一个窗体中改变另一个窗体下的按钮状态

来源:互联网 发布:剑三萝莉捏脸数据 编辑:程序博客网 时间:2024/04/30 08:04
vc6.0 怎么在一个窗体中改变另一个窗体上的按钮状态?

比如说:窗体1上有4个按钮,现在点击按钮4弹出另外一个窗体2,窗体2上有个按钮,现在我想点击窗体2上这个按钮让窗体1上按钮1、2、3,全部隐藏,应该怎么实现呢?

1.在窗体2的管理类中增加一个成员变量HWND g_wnd;
2.在按钮4的响应函数中记录窗体1的句柄
void CTestDlgDlg::OnBnClickedButton4()
{
// TODO: 在此添加控件通知处理程序代码
CPopdlg popdlg;//CPopdlg是窗体2的管理类
popdlg.g_wnd = GetSafeHwnd();
popdlg.DoModal();
}
3.自定义一个消息映射用于向窗体1发送消息
3.1 在Resource.h中声明一个宏#define WM_MSG  WM_USER+1000
3.2 更新窗体1的消息映射表
BEGIN_MESSAGE_MAP(CTestDlgDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_BUTTON4, &CTestDlgDlg::OnBnClickedButton4)
ON_MESSAGE(WM_MSG,Response)//Response是自定义消息响应函数
END_MESSAGE_MAP()
4.在窗体2的按钮响应函数中发送消息
void CPopdlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
::SendMessage(g_wnd,WM_MSG,(WPARAM)(LPCTSTR)"隐藏",16);
}
5.在窗体1中编写响应代码:
LRESULT CTestDlgDlg::Response(WPARAM wparam,LPARAM lparam)
{
CString m_recv = (LPCTSTR)wparam;
if (m_recv == "隐藏")
{
m_btn1.ShowWindow(SW_HIDE);
m_btn2.ShowWindow(SW_HIDE);
m_btn3.ShowWindow(SW_HIDE);
}
return 1;
}

原文地址:http://www.myexception.cn/vc-mfc/1167739.html

0 0
原创粉丝点击