CGostDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
Проблема даже не знаю с чем!
Проект такой - пользовательский интерфейс на MFC, причем со скинами (почти все элементы нестандартные). Написона на основе Диалогов: т.е. есть главный диалог, и два вспомагательный (дочерних, ввиде таб-контрола, точнее просто есть две кнопки, которые ShowWindow(SW_SHOW); либо ShowWindow(SW_HIDE); взависимости от того что нажато). На одной из страниц есть ListCtrl (переделанный: REPORT, OWNER_DATA), так вот почему- то при выборе (мышкой) этого контрола, и последующем нажатии Enter этот Диалог (точнее TAB- страничка) :eek:прячется!?
Да вот еще сделал в ListCtrl отлов KeyDown- так вот нажатие Enter туда не приходит (на остальные кнопки реакция есть)!
Ну значит кто-то отловил энтер для своих корыстных целей. Ищите в коде проекта.
Что именно "прячется". Диалоговое окно или вкладка?
Может выложите скрин.
Вот второй:[ATTACH]3280[/ATTACH]
Как видно они оба дочерние от главного окна.
Вот так [ATTACH]3281[/ATTACH]происходит если кликнуть мышкой по списку и потом нажать Enter (с другим TAB-диалогом такого не происходит).
Список пробовал менять на самый простой(мой редактируемый, кстати за это тоже спасибо всем, кто помагал:[ATTACH]3282[/ATTACH]) - таже ситуация.
Подскажите плиз.
Цитата: SpeedShifter
Более того если диалог (дочерний), в ктором содержится этот список, создать с флагом DS_CONTROL (я не знаю что это значит), то при нажатии Enter программа полностью завершается!
А можно увидеть код создания диалога?
Код:
А так я создаю в OnInitDlg одну из вкаладок
Код:
m_ListPage.Create(IDD_LIST_DIALOG, this);
m_ListPage.SetWindowPos(&wndTop, rc.left+1, 51, rc.right-2, rc.bottom-51-26, NULL );
m_ListPage.ShowWindow(SW_SHOW);
m_ListPage.SetWindowPos(&wndTop, rc.left+1, 51, rc.right-2, rc.bottom-51-26, NULL );
m_ListPage.ShowWindow(SW_SHOW);
Так выглядит Ресурсный файл
Код:
IDD_GOST_DIALOG DIALOGEX 0, 0, 480, 283
STYLE DS_SETFONT | WS_POPUP | WS_VISIBLE
EXSTYLE WS_EX_APPWINDOW
FONT 8, "Times New Roman", 0, 0, 0x1
BEGIN
END
IDD_LIST_DIALOG DIALOGEX 0, 0, 480, 283
STYLE DS_SETFONT | WS_CHILD
FONT 8, "Times New Roman", 0, 0, 0x1
BEGIN
CONTROL "",IDC_LIST,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | LVS_OWNERDATA | WS_GROUP | WS_TABSTOP,2,22,476,30
END
IDD_OPTION_PAGE DIALOGEX 0, 0, 480, 283
STYLE DS_SETFONT | WS_CHILD
FONT 8, "Times New Roman", 0, 0, 0x1
BEGIN
END
STYLE DS_SETFONT | WS_POPUP | WS_VISIBLE
EXSTYLE WS_EX_APPWINDOW
FONT 8, "Times New Roman", 0, 0, 0x1
BEGIN
END
IDD_LIST_DIALOG DIALOGEX 0, 0, 480, 283
STYLE DS_SETFONT | WS_CHILD
FONT 8, "Times New Roman", 0, 0, 0x1
BEGIN
CONTROL "",IDC_LIST,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | LVS_OWNERDATA | WS_GROUP | WS_TABSTOP,2,22,476,30
END
IDD_OPTION_PAGE DIALOGEX 0, 0, 480, 283
STYLE DS_SETFONT | WS_CHILD
FONT 8, "Times New Roman", 0, 0, 0x1
BEGIN
END
вообще, смахивает то, что onOK у диалога вызывается. ну он, соответственно и закрывается
Ну как можно так было! А я все об IDCANCEL только и думал!
Ох!
Вопрос такой, а как теперь заставить этот энтер (и стрелочки) приходить туда куда нужно?
Хоть это и не в тему, но ваще как красиво вышло или это излишество?
а дальше зависит от результатов )
Действительно Энтер расценивается как IDOK!
default button убрать. По ходу, все события клавиатуры приходят кнопке по умолчанию.