Как изменить состояние EDIT с неактивного на активное?

Rafaelich

Создаю в файле .RC контрол EDIT с неактивным состояниемCONTROL "", IDC_I, "EDIT", ES_LEFT|WS_BORDER| WS_TABSTOP|WS_DISABLED, 60, 35, 20, 10как послать ему сообщение для изменения состояния на активное
12 ответов

Rafaelich

SetFocus(HWND hwnd); ?


Rafaelich

Нельзя на задизейбленный элемент устанавливать фокус. Сначала EnableWindow.


Rafaelich

12345обрабатываю сообщения от checkbox, в зависимости от его состояния делаю EDIT DISABLED или ENABLED первая часть работает работает при установке галочки EDIT становится активным ENABLED но вот при снятии галочки EDIT не делается DISABLED (отметил часть кода красным) если просто посылаю EnableWindow(hPPOE,FALSE); то работает где портачу?case WM_COMMAND: if(HIWORD(wParam)==BN_CLICKED && LOWORD(wParam)==IDC_CHPPOE) { if(SendMessage(hPPOE,BM_GETCHECK,0,0)==0) EnableWindow(hPPOE,TRUE); else EnableWindow(hPPOE,FALSE); }


Rafaelich

А что возвращает SendMessage(hPPOE,BM_GETCHECK,0,0) в этих случаях? .


Rafaelich

хм проверил вроде всегда равно 0 состояние checkbox меняется а возвращается 0 странно и что тут нетак?


Rafaelich

Флаги стилей проверить для вашего чекбоксаReturn Value The return value from a button created with the BS_AUTOCHECKBOX, BS_AUTORADIOBUTTON, BS_AUTO3STATE, BS_CHECKBOX, BS_RADIOBUTTON, or BS_3STATE style can be one of the following. BST_CHECKED Button is checked. BST_INDETERMINATE Button is grayed, indicating an indeterminate state (applies only if the button has the BS_3STATE or BS_AUTO3STATE style). BST_UNCHECKED Button is cleared Remarks If the button has a style other than those listed, the return value is zero.


Rafaelich

CONTROL "PPoE",IDC_CHPPOE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,30,40,10 как бы у меня авточекбокс но возвращается 0 )


Rafaelich

Странно. Попробуйте использовать SendMessage(hPPOE, BM_GETSTATE, 0, 0), посмотрите будут ли меняться значения. Только учтите, что там еще флаг BST_FOCUS будет установлен, т.е. возвращаемое значение в вашем случае должно быть (BST_FOCUS | BST_CHECKED) или (BST_FOCUS | BST_UNCHECKED)Еще можно использовать IsDlgButtonChecked, хотя она шлет то же сообщение BM_GETCHECK


Rafaelich

попробовал не помогло таже ситуация всегда 0 удалил обработку сообщения написал тоже самое и заработало в чем проблема так и непонял ) спс всем за помощь


Rafaelich

Не актуально...


Rafaelich

нет неменяю проблема в обработке сообщения была только вот где вроде переписал туже обработку но теперя все работает СПС вам большое)


Rafaelich

Только сейчас обратил внимание, скобочки нужно было ставить if ((HIWORD(wParam)==BN_CLICKED) && (LOWORD(wParam)==IDC_CHPPOE)) Приоритет операторов. Да, бывает такое