Проблема с cipaddressctrl
Я пытаюсь использовать CIPAddressCtrl, и у него есть очень странная проблема. Когда я использую его в основном диалоговом окне приложения на основе диалогов, он работает правильно. Когда я использую его во всплывающем диалоговом окне, появляется проблема-он не принимает трехзначные адресные байты.
Кто-нибудь знает, что с этим происходит?
Что я уже пробовал:
Я попытался установить диапазоны полей до 255, и это не имело никакого значения. Я попробовал расширенную версию Hans Dietrich здесь, и она работает правильно, так как это основной диалог приложения. Я добавил кнопку в главный диалог его тестового приложения, которая вызывала бы вторичный диалог, и проблема появилась снова. Вот код диалога на случай, если кто-то захочет его попробовать :
class CCtrlTestDlg : public CDialog { public: CCtrlTestDlg( CWnd* pParent = NULL ) : CDialog( IDD, pParent ) {} enum { IDD = IDD_TEST_DIALOG }; CIPAddressCtrl m_Address; protected: virtual void DoDataExchange( CDataExchange* pDX ) { __super::DoDataExchange( pDX ); DDX_Control( pDX, IDC_TEST_ADDRESS, m_Address ); } virtual BOOL OnInitDialog() { __super::OnInitDialog(); return TRUE; // return TRUE unless you set the focus to a control } DECLARE_MESSAGE_MAP() }; BEGIN_MESSAGE_MAP( CCtrlTestDlg, CDialog ) END_MESSAGE_MAP()Это использует диалог с ID IDD_TEST_DIALOG и имеет элемент управления IP-адресом с ID IDC_TEST_ADDRESS и кнопку OK, и все. Я добавил кнопку в диалоговое окно приложения и при нажатии она делает это :
void CXIPAddressCtrlTestDlg::OnTestControl() { CCtrlTestDlg dlg( this ); dlg.DoModal(); }Диалоговый ресурс-это :
IDD_TEST_DIALOG DIALOGEX 0, 0, 180, 98 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION CAPTION "Control Test" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN DEFPUSHBUTTON "OK",IDOK,32,58,46,22 PUSHBUTTON "Cancel",IDCANCEL,100,58,46,22 LTEXT "Enter an Address:",IDC_STATIC,20,22,58,14,SS_CENTERIMAGE CONTROL "IPAddress2",IDC_TEST_ADDRESS,"SysIPAddress32",WS_TABSTOP,81,22,74,14 ENDи это все, что есть в диалоге тестирования. Этот диалог можно добавить практически в любое приложение MFC, чтобы проверить ситуацию.
Два других вида информация: когда я удалить МФЦ подкласса управления происходит то же самое. Кроме того, когда я ввожу третью цифру, элемент управления получает командное сообщение EN_MAXTEXT. Вот в чем проблема - я не могу ввести адрес с любым значением выше 99.
Rick York
Немного больше информации - проблема не в подклассах MFC, потому что базовый элемент управления демонстрирует то же самое поведение, когда нет объявленного элемента управления MFC.