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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Диалоговые окна без окна-родителя, Каковы последствия? 
V
    Опции темы
Тутанхамец
Дата 15.1.2006, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

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



Господа и товарищи, у меня такой вопрос.

Делаю простенькую прогу на Visual C++. Хотел обойтись одним диалоговым окном в качестве интерфейса. У П.В. Румянцева в книжке "Азбука программирования в Win32 API" читаю:

Цитата

Возможно, конечно, создание диалоговых окон без родителя, но тогда придется писать огромное количество кода, обеспечивающее нормальное функционирование окна.


Я попробовал. На глаз в поведении окна никаких странностей. В чем подвох? Что за огромное количество кода и что уважаемый П.В. понимал под нормальным функционирование, как вы думаете? Заранее благодарен. smile

Код пробной проги:

Код

#include "windows.h"
#include "windowsx.h"
#include "commctrl.h"
#include "resource.h"

BOOL CALLBACK DlgProc(HWND, UINT, WPARAM, LPARAM);


int APIENTRY WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){

DialogBox(hInstance, (LPCTSTR)IDD_DIALOG_HELLO, NULL, DlgProc);

return 0;
}


BOOL CALLBACK DlgProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam){

    switch(Msg){
    case WM_INITDIALOG: 

    
    return TRUE;

    case WM_CLOSE:

        EndDialog(hDlg,0);
    return TRUE;

    case WM_COMMAND:


    return TRUE;

    }


return FALSE;
}



Это сообщение отредактировал(а) Тутанхамец - 15.1.2006, 15:41
PM MAIL   Вверх
Fixin
Дата 15.1.2006, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



Он имел ввиду, что если тебе понадобиться полные возможности контроля окна, то код будет иным, и возможно, больше. А так - довольно распространенный метод создания приложения "по-быстрому", особенно часто применятся в ассемблере для винды.
PM MAIL ICQ   Вверх
JoyEx
Дата 15.1.2006, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дядя
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 21.6.2005
Где: Москва, РФ

Репутация: 4
Всего: 12



Может уважаемый П.В. писал еще до появления Win95, ведь DialogProc появилась с Windows 95?


--------------------
Если ты уже никого не боишься, значит ты самый страшный 
PM IM ICQ AOL YIM MSN   Вверх
Fixin
Дата 15.1.2006, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



Цитата(Тутанхамец @ 15.1.2006, 16:38 Найти цитируемый пост)

П.В. Румянцева в книжке "Азбука программирования в Win32 API"
Думаю, это сопоставимо с появлением 95го. smile

PM MAIL ICQ   Вверх
Тутанхамец
Дата 15.1.2006, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

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



Спасибо, Fixin! С сомнениями покончено! smile

А Румянцев писал про 95-й и NT 4.0.


PM MAIL   Вверх
rsm
Дата 15.1.2006, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 4
Всего: 62



Цитата(Тутанхамец @ 15.1.2006, 17:38 Найти цитируемый пост)
Возможно, конечно, создание диалоговых окон без родителя, но тогда придется писать огромное количество кода, обеспечивающее нормальное функционирование окна.

Бред какой-то. Ну будет окно диалога без родителя, т.е. полностью самостоятельное - все равно придется писать для него отдельную функцию DialogProc (хотя бы для того, чтобы нормально закрыть). Так что не вижу никакой разницы в объемах кода.

Может быть подразумевается несколько иное: у диалоговых окон можно просто накидать нужные контролы, а при рукопашном создании окна так же придется создавать полностью вручную и все контролы? Но тогда получается с точностью до наоборот - диалог куда проще в создании и управлении.

В общем, бред какой-то smile

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0521 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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