Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [кпк] Отображение диалога, по щелчку на Item'е дерева 
:(
    Опции темы
Earnest
Дата 23.4.2010, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



Может, само дерево? А еще можно Спаем посмотреть, что это за hwnd.
Еще пришло в голову такое решение (все-таки отшибание KILLFOCUS не есть хорошо).
Можно не показыать диалог сразу же, а послать самому себе какое-то сообщение (или команду), но асинхронно, т.е. через Post. Это, конечно, если KillFocus не результате открытия диалога приходит... Но в этом случае можно попробовать сначала переставить фокус куда-то еще (на главное окно, например) - до посылки сообщения.


--------------------
...
PM   Вверх
Brodyaga
Дата 23.4.2010, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: нет
Всего: 2



Цитата

 А еще можно Спаем посмотреть, что это за hwnd.

А как спаем то, у меня на эмуляторе всё это дело, в его окна не забраться..
PM MAIL   Вверх
Brodyaga
Дата 23.4.2010, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: нет
Всего: 2



Цитата

Может, само дерево?

Нет.

Цитата

Можно не показыать диалог сразу же, а послать самому себе какое-то сообщение (или команду), но асинхронно, т.е. через Post. Это, конечно, если KillFocus не результате открытия диалога приходит...

KillFocus именно в результате открытия второго диалога, так как когда я перестал его открывать, никакого KillFocus в оконную процедуру дерева не пришло.

Цитата

Но в этом случае можно попробовать сначала переставить фокус куда-то еще (на главное окно, например) - до посылки сообщения.

Переставил фокус перед открытием второго диалога на главный диалог:
Код

 if(level==2)
 {
   MainDialog->SetFocus();

   pMyDialog2=new CMyDialog2(this);
   
   pMyDialog2->Create(IDD_MYDIALOG2);
   
   pMyDialog2->ShowWindow(SW_SHOW);
 }


Сообщение WM_KILLFOCUS пришло раньше, а именно после установки фокуса на MainDialog, но для отображения второго диалога это не помогло... он всеровно оказался снизу :(
Сообщение WM_KILLFOCUS пришло 1 раз, после открытия второго диалога оно не приходило... Какие ещё есть идеи?
PM MAIL   Вверх
Earnest
Дата 23.4.2010, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



Асинхронное сообщение не пробовал (отложить открытие). А фокус переводить перед посылкой сообщения.


--------------------
...
PM   Вверх
Brodyaga
Дата 23.4.2010, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: нет
Всего: 2



Цитата

Асинхронное сообщение не пробовал (отложить открытие). А фокус переводить перед посылкой сообщения.

Всмысле установить фокус асинхронно? WM_SETFOCUS главному диалогу для диалога с деревом?
PM MAIL   Вверх
Earnest
Дата 26.4.2010, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



Нет, то что я писала чуть раньше:
Цитата(Earnest @  23.4.2010,  12:18 Найти цитируемый пост)
Можно не показыать диалог сразу же, а послать самому себе какое-то сообщение (или команду), но асинхронно, т.е. через Post. 




--------------------
...
PM   Вверх
Brodyaga
Дата 26.4.2010, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: нет
Всего: 2



Цитата

Нет, то что я писала чуть раньше:

Цитата(Earnest @  23.4.2010,  12:18 )
Можно не показывать диалог сразу же, а послать самому себе какое-то сообщение (или команду), но асинхронно, т.е. через Post. 

Не могу понять.. кому самому себе? диалогу на котором лежит дерево? и какое именно сообщение? любое?

и когда?

Код

 if(level==2)
 {
   MainDialog->SetFocus();

   <--ЗДЕСЬ ПОСЛАТЬ ДИАЛОГУ С ДЕРЕВОМ (CMyDialog) КАКОЕ ЛИБО СООБЩЕНИЕ ЧЕРЕЗ Post-->

   pMyDialog2=new CMyDialog2(this);
   
   pMyDialog2->Create(IDD_MYDIALOG2);
   
   pMyDialog2->ShowWindow(SW_SHOW);
 }


Если так, то что это даст?
PM MAIL   Вверх
Earnest
Дата 26.4.2010, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



Сообщение = пользовательское (сам определи)
Показывать диалог в обработчике этого сообщения, а не в OnSelChanged
Смысл - дать возможность всему обработать все, что в очереди.


--------------------
...
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0474 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.