как это сделать в vc.net (или vc6)
Если ты про WinForms, то у всех контролов есть проперти Enabled. В MFC по идее тоже такая штука должна быть, но точно не скажу.
вот я бы и хотел знать как это в mfc сделать
Тебе надо плучить указатель на CWnd(либо сразу связываешь с контролом, переменною управляющего типа, либо по идентификатору ресурса а у него туева хуча методов. EnableWindow(TRUE) например.
а по конкретнее ни кто не знает? я-то понимаю что нужно получить какой-то хендлер и у него куча методов. О ТемноСерый приди на помощь ты мня всегда выручал в подобные минуты...
Это ты мне?
зы
А жертвы уже принес? ритуальные пляски сплясал?
зы
А жертвы уже принес? ритуальные пляски сплясал?

да, тебе, ритульные жесты, слова и тому подобное в этих случаях я испускаю в достатке
В данном случае, лучше вставить CEdit не как int, а как СEdit.
Тогда вешаешься на изменение CheckBox-а, и дергаешь EnableWindow(TRUE/FALSE) у CEdit-а. int из CEdit можно будет получить через atoi(edit.GetWindowText;
зы
Если хочется по тем или иным причинам оставить CEdit, как int, то придется получать едит через this.GetDlgItem(ID_YourEdit а далее опять же edit->EnableWindow(TRUE/FALSE)
Тогда вешаешься на изменение 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);
а, что потом?
По ходу возник следующий вопрос: а как сотояние checkbox'a узнать внутри класса? через переменную не получается, т.к. она обновляется только при зактытии окна.
т.е. я делаю так:
CWnd* id2 = GetDlgItem(IDC_CHECK1);
а, что потом?
Напиши функцию UpdateDate(FALSE) или TRUE не помню. Она обнавляет значения переменны.
хотелось бы без нее обойтись
У тебя какая переменная связана в Check. Bool или CButton?
Если CButton, то есть функция GetState если bool то без Update ты не обойдешься.
Если CButton, то есть функция GetState если bool то без Update ты не обойдешься.
bool, я сделал уже через доп. переменную, которая выставляется вначале, а потом меняется при нажатии на checkbox, работает, только это не шибко красиво, хотелось бы узнавать текущее состояние checkbox'a без помощи каких либо переменных (ну разве что CWnd*)
А чем тебе UpdateDate не понравилась?
Попробуя так
CButton *butCheck;
bool bCheck;
butCheсk = (CButton*)GetDlgItem(IDC_CHECK1);
bCheck = butCheck->GetState&0x0003;
По идеи, то что тебе нужно.
Попробуя так
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);
вроде бы явное преобразование...
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 будет работать не так как я думаю?
Вот смотри что может получится. Для примера на данной системе пусть bool будет 1 байт, а int - 4, тогда если значение в int был например 1024 , как бы true, после вот такого преобразования (bool)1024 в bool попадет 0, т.е. false. так как преобразование просто отрезает старшие биты.
зы
по хорошему из int-а в bool надо преобразовывать так: bool b = i != 0;
зы
по хорошему из int-а в bool надо преобразовывать так: bool b = i != 0;
>Для примера на данной системе пусть bool будет 1 байт, а int - 4, тогда если значение в int был например 1024 , как бы true, после вот такого преобразования (bool)1024 в bool попадет 0, т.е. false. так как преобразование просто отрезает старшие биты.
1 байт == 1 бит? все равно не понял почему 0 попадет, если там все единицы были
>по хорошему из 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 а когда выбираешь - активен.