我正在使用 MFC ComboBox 控件来更改一些参数,这些参数在可用的 IP 范围内有选区(例如,只有/没有广播 IP)。
我需要调用范围修改函数两次以强制刷新显示值:为什么?
行为:
One call to range modification
Two calls to range modification
源代码:
void CIPAddressBugDlg::OnChangeCombo()
{
UpdateData(TRUE);
ChangeIPRange();
//ChangeIPRange();
}
void CIPAddressBugDlg::ChangeIPRange()
{
BYTE nField0, nField1, nField2, nField3;
if ( Combo.GetCurSel() )
{
IpAddress.GetAddress(nField0, nField1, nField2, nField3);
if ( nField0 < (BYTE) 224 )
nField0 = 224;
IpAddress.SetAddress(nField0, nField1, nField2, nField3);
IpAddress.SetFieldRange(0, 224 , 232 );
}
else
{
IpAddress.GetAddress(nField0, nField1, nField2, nField3);
if ( nField0 >= (BYTE) 224 )
nField0 = 223;
IpAddress.SetAddress(nField0, nField1, nField2, nField3);
IpAddress.SetFieldRange(0, 0 , 223 );
}
}
Combo 是一个 ComboBox 控件,IpAddress 是一个 CIPAddressCtrl。我正在运行 Windows XP 的 VS C++ 6.0(是的,我知道 -_- )上编译。
(如果需要我也可以上传整个玩具项目)
最佳答案
尝试将 SetFieldRange
移动到 SetAddress
之前,否则 Windows 将忽略 SetAddress
,因为它超出了范围。
关于c++ - 需要调用两次 setter 以强制在 MFC 中刷新 GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21483123/