Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: ToolTip в виде диалогового окна в CFileDialog  (Прочитано 11406 раз)
0 Пользователей и 5 Гостей смотрят эту тему.
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« : 21-03-2005 10:20 » 

Люди, опять я с глупыми вопросами  Быть такого не может

Постановка задачи : при выборе файла в CFileDialog - диалоге при подведении мыши к очередному имени файла вместо обычного тоолтипа с текстом должно появляться окно (CDialog) с нарисованной внутри схемой (схема считывается из файла, это не вопрос). Вопрос - как организовать этот ToolTip в виде диалогового окна, да к тому же еще и в CFileDialog?
теоретиочески я понимаю, что надо сделать:
1)свой ToolTip - класс с папой CToolTipCtrl и переписать там OnPaint, чтобы вместо рамки с текстом вызывался нужный диалог
2) свой FileDialog с папой CFileDialog, в котором тоже что-то переписать, только тут я даже не знаю, что   Так больше нельзя...
Может, кто-то что-то на эту  тему знает?
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #1 : 21-03-2005 13:35 » 

"Ну ты барин и задачки ставишь. За 10 дён одному не справиться, тут помошник нужен - гомо сапиенс."
В общем как это сделать не знаю, просто чтоб тебе не так одиноко было Улыбаюсь
Я думаю, как-раз с п.1 будут проблеммы - CToolTipCtrl в данном случае принадлежит CListCtrl т.е. в дебрях commondlg и как его подменить - понятия не имею. Ведь CFileDialog просто враппер. Проще наверно всё-таки будет свой диалог сделать. А на codeguru codeproject смотрела? Что-нить типа customizing CFileDialog.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #2 : 21-03-2005 13:42 » 

Джон,

невиноватая я - начальство прижало! Обычная совсем история Ага

как раз с п.1 я попробовала - как-то дышит Ага, т.е. таки переписала OnPaint Ага и там просто стартовала новый диалог.
А вот п.2 - проблема... Спасибо за идею - сейчас поищу. Я как-то уперлась в
тоолтип и искала с этой стороны пропасти, а про другую забыла Ага
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #3 : 21-03-2005 13:55 » 

Malaja, я имел ввиду не возможность перерисовки, а подмену контролла в диалоге. А что "свой" CFileDialog отпадает?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #4 : 21-03-2005 15:23 » 

Джон,

я имела в виду тоолтип. С диалогом пока никак Ага Т.е. я попыталась переписать OnLBSelChangedNotify, но пока не пойму, почему я не попадаю в эту функцию...
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #5 : 22-03-2005 08:57 » 

А где ты её переписываешь? Тебе нужен ListrCtrl диалога.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #6 : 22-03-2005 09:40 » 

Джон,

Я сделала класс class MyFileDialog : public CFileDialog и попыталась переписать в нем OnLBSelChangedNotify, т.к. если верить мсдн,то
Цитата
"This function is called whenever the current selection in a list box is about to change. Override this function to provide custom handling of selection changes in the list box."
Т.е. я рассчитывала попасть в нее, а там
Код:
	TCHAR szClassName[1024];
CWnd* pWnd = GetDlgItem(nIDBox);
GetClassName(pWnd->m_hWnd, szClassName, 1024);
CString str = szClassName;
if (str == "syslistview32")
{
CListCtrl* pList = (CListCtrl*)GetDlgItem(nIDBox);
                // а тут уже можно было бы и работать
}
Но проблема в том, что я не попадаю в эту функцию при смене селекции в ЛистБохе. А почему - пока не знаю. Искала вчера в newsgroups, но ничего вразумительного пока не нашла.
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #7 : 22-03-2005 12:08 » 

Улыбаюсь В этом проблемма и заключается, что тебе для карты сообщений нужн ID контролла. а его у тебя и нету. А тебе обязательно в тултипе надо? есть примеры как сделать например предпросмотр картинок. Может подойдёт? Всё-таки попроще будет.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #8 : 22-03-2005 12:40 » 

Джон,

пока вот выяснила следующее :
можно спокойно перегрузить OnNotify (все остальные тоже можно, но я в них не попадаю при дебаге...):

BOOL MyFileDialog::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
   LPNMLISTVIEW pLView = reinterpret_cast <LPNMLISTVIEW> (lParam);

   if (pLView->hdr.code == CDN_SELCHANGE)
   {
      CString str = GetFileName();
   }
   else if (pLView->hdr.code == CDN_INITDONE)
   {
                UINT nID = pLView->hdr.idFrom; // это и есть, если верить мсдн, ID контрола
      HWND hwndLV, hwndTT;
      hwndLV = pLView->hdr.hwndFrom;  // это и есть HWND LISTVIEW
      hwndTT = m_ToolTip->m_hWnd;    // это мой класс ToolTipa
      ::SendMessage((hwndLV), LVM_SETTOOLTIPS, (WPARAM)hwndTT, (LPARAM)0);  // проблема заключается в том, что пока результатов этой замены не вижу...   }
      
   return CDialog::OnNotify(wParam, lParam, pResult);
}

Если у тебя есть примерчик, скинь мне, пожалуйста, не сочти за наглость с моей стороны. Я один в codeproject нашла, загрузила, а он при распаковке пароль затребовал ;-(
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines