как это сделать в vc.net (или vc6)
Если ты про WinForms, то у всех контролов есть проперти Enabled. В MFC по идее тоже такая штука должна быть, но точно не скажу.
вот я бы и хотел знать как это в mfc сделать
Тебе надо плучить указатель на CWnd(либо сразу связываешь с контролом, переменною управляющего типа, либо по идентификатору ресурса а у него туева хуча методов. EnableWindow(TRUE) например.
а по конкретнее ни кто не знает? я-то понимаю что нужно получить какой-то хендлер и у него куча методов. О ТемноСерый приди на помощь ты мня всегда выручал в подобные минуты...
зы
А жертвы уже принес? ритуальные пляски сплясал?
да, тебе, ритульные жесты, слова и тому подобное в этих случаях я испускаю в достатке
Тогда вешаешься на изменение CheckBox-а, и дергаешь EnableWindow(TRUE/FALSE) у CEdit-а. int из CEdit можно будет получить через atoi(edit.GetWindowText;
зы
Если хочется по тем или иным причинам оставить CEdit, как int, то придется получать едит через this.GetDlgItem(ID_YourEdit а далее опять же edit->EnableWindow(TRUE/FALSE)
По ходу возник следующий вопрос: а как сотояние checkbox'a узнать внутри класса? через переменную не получается, т.к. она обновляется только при зактытии окна.
т.е. я делаю так:
CWnd* id2 = GetDlgItem(IDC_CHECK1);
а, что потом?
Напиши функцию UpdateDate(FALSE) или TRUE не помню. Она обнавляет значения переменны.
хотелось бы без нее обойтись
Если CButton, то есть функция GetState если bool то без Update ты не обойдешься.
bool, я сделал уже через доп. переменную, которая выставляется вначале, а потом меняется при нажатии на checkbox, работает, только это не шибко красиво, хотелось бы узнавать текущее состояние checkbox'a без помощи каких либо переменных (ну разве что CWnd*)
Попробуя так
CButton *butCheck;
bool bCheck;
butCheсk = (CButton*)GetDlgItem(IDC_CHECK1);
bCheck = butCheck->GetState&0x0003;
По идеи, то что тебе нужно.
error C2228: left of '.GetState' must have class/struct/union type
Я описался в пред. посте вместо . надо ->. Теперь проверь. Должно всё работать.
warning C4800: 'UINT' : forcing value to bool 'true' or 'false' (performance warning)
строка была такая:
bool bCheck;
UINT result;
bCheck = bool(result);
вроде бы явное преобразование...
Потому, что ты явно пытаешь сделать из int-а bool, а в общем случае это неправильно
Пиши что-нибудь типа static_cast<bool>
а почему не правильно? я всегда свято верил, что == 0 это false, != 0 - true, как тут еще можно преобразовать? и вообще, раз я это явно делаю нечего мне эти ворнинги показывать, где блин гибкость и возлагание подобных решений на программиста, или есть примеры того что подобная конструкция откомпилированная в vs.net будет работать не так как я думаю?
зы
по хорошему из int-а в bool надо преобразовывать так: bool b = i != 0;
1 байт == 1 бит? все равно не понял почему 0 попадет, если там все единицы были
>по хорошему из int-а в bool надо преобразовывать так: bool b = i != 0;
да, примерно таким способом я и избавился от ворнинга
а кто тебе обещал, что в int-е все биты будут установлены в единицу?
Оставить комментарий
pulmo
есть диалог, соответственно его класс, на диалоге - Check Box, Edit Control. соответственно веременные типа bool и int. Можно ли и если можно то как сделать следующую вешь: при выбраном check box'e Edit Control должен быть не активен (read only а когда выбираешь - активен.