1. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
Скрыть объявление

Уважаемый Гость, в 23:30 по мск форум будет закрыт на профилактику на 1,5 часа до 01:00 24.10.2017

OnOK() и OnCancel() в VC++

Тема в разделе "MS Visual C++", создана пользователем A.D.I.D.A.S, 29 окт 2004.

  1. A.D.I.D.A.S

    A.D.I.D.A.S Гость

    Репутация:
    0
    Подскажите пожалуйсто такую вещь:
    При создании приложения типа Dialog Based на диалоге сразу есть 2 кнопки - Ok и Cancel. Их конечно можно убрать, но при нажатии на Enter и ESC все равно срабатывают методы OnOK() и OnCancel()... Как от этого избавится(т.е. чтобы при нажатии этих кнопок ничего не происходило)?
     
  2. iktomy

    iktomy Гость

    Репутация:
    0
    Когда создашь класс твоего диалога, сразу же, НЕ МЕНЯЯ ИДЕНТИФИКАТОРЫ КНОПОК, создай функции обработки их нажатия (надеюсь знаешь как :) ). После этого удали весь код из этих кнопок (там будет что то типа
    Код:
    CDialog::onCancel и CDialog::onOk)
    . Вот и все!
    Или можешь поставить заглушку - вместо
    Код:
    CDialog::onCancel
    написать
    Код:
    TRACE("CMyDialog::onCancel\n");
    Юзайте тег
    Код:
     и не будет смайлов![/size][/color]
     
  3. A.D.I.D.A.S

    A.D.I.D.A.S Гость

    Репутация:
    0
    Спасибо! А вот смайлики вместо некоторых симовлов С++-кода это прикольно=))) :unsure:
     
  4. A.D.I.D.A.S

    A.D.I.D.A.S Гость

    Репутация:
    0
    И еще: как создать переменные определенного типа, чтобы в них сразу содержались значения элементов диалога(Edita допустим). Я умею так:
    //m_edit - control variable
    CString s;
    m_edit.GetWindowText(s);

    Знаю, что можно объявить переменную m_edit типа CString и в ней будет содержаться текст из Edit'а, но не знаю как...
     
  5. A.D.I.D.A.S

    A.D.I.D.A.S Гость

    Репутация:
    0
    Попробовал убрать код из функций обработки этих кнопок, а затем и удалить эти кнопки. Теперь при нажатии на Enter и ESC ничего не происходит, но беда в том, что она перестала реагировать на ALT+F4 и вообще как-либо закрываться(кроме CTRL+ALT+DELETE конечно :unsure: ) Заглушка дает тот же эффект...
     
  6. Guest

    Guest Гость

    Репутация:
    0
    Видимо, тебе надо что-нибудь про MFC почитать сначала.
    Для связи переменной и едита смотри DDX_Text.

    Чтобы убрать стандартную реакцию на ESC - надо отсечь его в PretranslateMessage, наверное, но я никогда так не делал - и тебе не советую. Если ты пишешь что-либо серьезнее домашнего задания, не стоит мешать пользователю закрывать диалог так как он привык.
     
  7. iktomy

    iktomy Гость

    Репутация:
    0
    Почитайка ты лучше "Программирование на Visual C++ 6.0" Круглински, Уингоу и Шеферд - и все старые вопросы отпадут. Но появятся новые ;) !
     
  8. bel_nikita

    bel_nikita Гость

    Репутация:
    0
    A.D.I.D.A.S
    Греби в сторону WM_KEYDOWN. Создай событие и вылавливай какие-хочешь клавиши
     
  9. iktomy

    iktomy Гость

    Репутация:
    0
    Уж слишко м ты глубоко копать предлагаешь. Лучше, ІМХО конечно, WM_CLOSE обработать, а в функцию обработчика добавить
    Код:
    CDialog::EndDialog(0);
    CDialog::OnClose();
    У меня так работает и ноу проблемс! ;)
     
  10. bel_nikita

    bel_nikita Гость

    Репутация:
    0
    iktomy
    А WM_CLOSE как генерить? Точнее, кто генерить будет? Вы это читали:
    iktomy
    Интересно и как вы ESC отрабатываете?
     

Поделиться этой страницей