|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.12.2012, 18:41 | #1 |
Форумчанин
Регистрация: 03.05.2010
Сообщений: 129
|
Класс-обложка для диалогового окна на WINAPI.
Добрый день!
Задача: выполнить диалоговое окно в форме класса. Листинг TDLG.h Код:
Листинг TDLG.cpp Код:
1. Как в TDLG получить дескриптор окна? Думаю что хорошо бы при сообщении WM_INITDIALOG, но после долгих мучений не получилось. Предполагал завести переменную константу private типа, но из диалоговой процедуры изменить эту переменную не как. 2. Вообще для решения этой задачи я на правильном пути? Заранее благодарен за помощь, Алексей. |
15.12.2012, 18:55 | #2 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
А почему именно константу? Умрет окно - хендл будет недействительным. Пусть будет protected. Возможное решение - хук WH_CBT и передача ему адреса объекта TDlg. И тогда даже до первого захода в процедуру окна объект уже имеет валидный хендл.
ps Или вот : процедуру DlgProc сделать дружественной классу. Последний раз редактировалось EUGY; 15.12.2012 в 19:01. |
15.12.2012, 19:16 | #3 |
Форумчанин
Регистрация: 03.05.2010
Сообщений: 129
|
|
15.12.2012, 19:43 | #4 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Можно и не протектед, а вообще приват, но тады наследные принцы не получат доступа к хендлу. на скорую руку так:
Код:
|
15.12.2012, 20:58 | #5 |
Форумчанин
Регистрация: 03.05.2010
Сообщений: 129
|
|
15.12.2012, 21:42 | #6 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
нет. это как раз стандартное решение - в DialogBoxParam передать последним параметром что-то, что проявится как LPARAM при WM_INITDIALOG.
Кто говорит, что надо загромождать cpp? Я просто для краткости так написал. А ты делай правильно. Прототипы в *.h - реализация в *.cpp. В чем проблема? Спрашивай ... |
15.12.2012, 21:59 | #7 |
Форумчанин
Регистрация: 03.05.2010
Сообщений: 129
|
Да, нет Ваш ответ я понял. У меня огромный текст в main.cpp ( в проекте он один из срр и в этой теме не его текст) и мне еще необходимо вызвать диалоговое окно. Так вот что бы не загромождать main.cpp я надумал убрать работу с диалоговым окном в другой файл. Пытаюсь убрать в класс. Спасибо за Ваши ответы!
PS: Как это сделать по-грамотней? |
15.12.2012, 22:19 | #8 | |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Цитата:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Размер диалогового окна | Samir_ | Win Api | 0 | 15.03.2012 11:30 |
Создание диалогового окна для указания пути к рабочей книге | igsxor | Microsoft Office Excel | 6 | 29.03.2011 01:01 |
Код диалогового окна "обзора папок" (для C++) | >>arty<< | Общие вопросы C/C++ | 3 | 26.12.2010 15:49 |
Вызов диалогового окна | Sapsan | Общие вопросы C/C++ | 6 | 30.03.2009 23:03 |
Собственный класс диалогового окна на чистом WinApi в Delphi | Iber | Win Api | 19 | 01.12.2008 15:40 |