MFC中单击按钮一,如何使按钮二自动隐藏?并使原来隐藏的按钮三显示出来?

2024年11月19日 15:27
有2个网友回答
网友(1):

假设按钮2的ID为IDC_BUTTON2,按钮3的ID为IDC_BUTTON3

首先在把按钮3的属性设置为隐藏
或者在对话框的InitDialog里加上
GetDlgItem(IDC_BUTTON3)->ShowWindow(SW_HIDE);

如果要单击按钮一,隐藏按钮二,按钮三显示并接替其位置
GetDlgItem(IDC_BUTTON2)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_BUTTON3)->ShowWindow(SW_SHOW);

CRect rectButton;
GetDlgItem(IDC_BUTTON2)->GetWindowRect(&rectButton);
ScreenToClient(&rectButton);
GetDlgItem(IDC_BUTTON3)->SetWindowPos(&wndBottom , rectButton.left, rectButton.top, rectButton.Width(), rectButton.Height(), SWP_NOZORDER);

如果已经声明为控件变量m_Button2,m_Button3;

就用:
m_Button2.ShowWindow(SW_HIDE);
m_Button3.ShowWindow(SW_SHOW);

CRect rectButton;
m_Button2.GetWindowRect(&rectButton);
ScreenToClient(&rectButton);
m_Button3.SetWindowPos(&wndBottom , rectButton.left, rectButton.top, rectButton.Width(), rectButton.Height(), SWP_NOZORDER);

网友(2):

这应该是一个比较简单的问题,我刚才试验了一下,很容易实现:
首先为三个按钮分别添加控件变量,分别命名为:m_Button1,m_Button2,m_Button3;

在对话框的InitDialog里,先把按钮三隐藏:
m_Button3.ShowWindow(SW_HIDE);
然后为按钮一添加单击事件程序:
m_Button2.ShowWindow(SW_HIDE); //隐藏按钮二
m_Button3.ShowWindow(SW_SHOW); //显示按钮三
你所说的按钮三接替按钮二位置,可以简单地处理:把按钮三和按钮二画在同一个地方,这样在运行后就会感觉是接替其位置了;

如果再添加一个 int Show;可以控制按钮二与按钮三交替隐藏与显示;