Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как созжать окно из ресурсов?

418
25 марта 2002 года
artgonch
54 / / 20.07.2000
Уважаемые товарищи-знатоки Win32 API, подскажите пожалуйста, как мне не используя функции работы с диалогами создать окно, описанное в ресурсах. В доступной мне документации я ничего подобного не нашел, но в кслассе MFC CFrameWnd есть метод, позволяющий это сделать. А как этого добиться, использую только API&
Аноним
А чем тебе функции работы с диалогами не подходят?
418
26 марта 2002 года
artgonch
54 / / 20.07.2000
Да мне они подходят, но задание такое: нужно использовать функции работы с окнами, а не с диалогами. Но если так, то нужно все элементы управления на главном окне расставлять вручную (т. е. высчитывать их координаты и размеры), а это очень долго и муторно.
1.5K
28 марта 2002 года
sergoo
12 / / 20.07.2000
Интересно, а как ты запихнешь окно в ресурс?
Или ты хочешь в ресурсе создать диалог, а его контролы использовать в окне?
418
28 марта 2002 года
artgonch
54 / / 20.07.2000
Не совсем так. В классе CWnd библиотеки MFC есть метод создания окна по описанию в ресурсе. Но CWnd не управляет диалоговым окном. Как-то же он может это делать! Но как?
1.5K
28 марта 2002 года
sergoo
12 / / 20.07.2000
Цитата:

On 2002-03-28 1923, artgonch wrote
Не совсем так. В классе CWnd библиотеки MFC есть метод создания окна по описанию в ресурсе. Но CWnd не управляет диалоговым окном. Как-то же он может это делать! Но как?


Не силен я в MFC Скажи метод - почитаю Библию, и скажу насчет WinAPI

418
29 марта 2002 года
artgonch
54 / / 20.07.2000
А что это за бибшлия? Мне очень интересно. Поскажи, как книга называется.
И еще. Можно ли вообще создавать недиалоговые окна из ресурсов? А то я сто-то засомневался. Может у меня глюки были? Жду ответа.
526
31 марта 2002 года
advisor
44 / / 20.03.2000
MSDN
нельзя
418
31 марта 2002 года
artgonch
54 / / 20.07.2000
А ты считаешь, что MSDN это библия? По-моему, очень бедный источник информации.
526
31 марта 2002 года
advisor
44 / / 20.03.2000
предложи лучше!?
418
31 марта 2002 года
artgonch
54 / / 20.07.2000
Win32 Online Help (тоже макрософтовский), который поставляется с Bolrnad C++. По крайней мере, у него более логичная структура и объем в десятки раз меньше.
Аноним
У любого окна есть оконная функция (WNDPROC), в том числе у диалогового.
При создании обычного, не диалогового окна оконная функция передаётся в качестве аргумента в функцию CreateWindow.
У диалогового окна, созданного функцией DialogBox или т.п., оконная функция скрыта от программиста. В качестве аргумента передаётся "диалговая" функция (DLGPROC). Соотношение между ними такое оконная функция некоторые сообщения обрабатывает сама, а некоторые передаёт диалоговой. Таким образом, внутри диалоговой функции некоторые сообщения оказываются недоступными.
Как это ограничение обойти? Существует механизм замены текущей оконной функции на новую. Он называет Subclass. Для этого необходимо написать новую оконную функцию и вызвать SetWindowLong.
Если это решение не подходит, может использовать что-нибудь экзотическое, типа при регистрации оконного класса (RegisterClass) в оконной функции, которая передаётся в качестве аргумента обрабатывать WM_CREATE и по WM_CREATE создавать диалог с помощью DialogBox или CreateDialog. (Я не уверен, что это будет работать, скорее всего - нет.)
При использовании MFC вообще нет никаких проблем (вернее, они все скрыты). См. функцию CWndExecuteDlgInit.

[EMAIL]MSheikman@mail.ru[/EMAIL]
418
01 апреля 2002 года
artgonch
54 / / 20.07.2000
Спасибо! Я как-то все пропускал эту функцию мимо глаз, когда просматривал справочник. Но теперь я все понял. Большое спасибо.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог