Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
2 / 2 / 0
Регистрация: 27.10.2016
Сообщений: 48
1

Создание окон в процедуре другого окна

20.01.2017, 19:34. Показов 2435. Ответов 30
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, подскажите можно ли создавать и регистрировать классы, а так же создавать окна по ним в процедуре другого окна чтобы все классы окон, регистрацию, создание а так же кнопки ВСЕЙ многооконной программы не писать в:
INT WINAPI WinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

Пробывал в заголовочный вынести extern HINSTANCE hThisInstance; и подгружать его в файлы процедур, ничего не работает.
Объясните принцип если это вообще возможно.. как это сделать.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.01.2017, 19:34
Ответы с готовыми решениями:

WIN32, Windows(Окна) . Создание Доп.окон.
Снова я) Есть програмка. Программная среда -VisualStudio - проект Win32 . Есть основное окно....

Окно: создать 4 окна, в центре каждого из окон вывести номер окна в порядке создания(1-4)
Не могу справиться с программой, Нужно создать 4 окна. В центре каждого из окон вывести номер окна...

Почему авторы диалоговых окон стараются сделать свои окна максимально похожими на стандартные окна?
Начал рассматривать множество программ на С++ и заметил, что программисты стараются сделать почти...

Перерисовка окна другого процесса через дескриптор этого окна
Приветствую всех. Может кто-то знает, как перерисовать окно другого процесса через дескриптор...

30
2 / 2 / 0
Регистрация: 27.10.2016
Сообщений: 48
27.01.2017, 21:34  [ТС] 21
Author24 — интернет-сервис помощи студентам
wmaster575, Ты суперголова!!!! Спасибо огромное!!! теперь можно писать код не лазия в main.cpp
0
31 / 31 / 15
Регистрация: 02.02.2015
Сообщений: 152
27.01.2017, 21:37 22
NSXfl, принято!
0
2 / 2 / 0
Регистрация: 27.10.2016
Сообщений: 48
27.01.2017, 22:47  [ТС] 23
wmaster575, проверку на наличие класса окна и кнопки я думаю тоже можно убрать..
0
31 / 31 / 15
Регистрация: 02.02.2015
Сообщений: 152
27.01.2017, 23:28 24
NSXfl, да, можно, если всё происходит в WM_CREATE, то можно убрать, так как это сообщение вызывается только один раз. И если вы не собираетесь создавать окна этого же класса повторно.
0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
28.01.2017, 09:59 25
Цитата Сообщение от rao Посмотреть сообщение
Оконный класс регистрируется в границах всей оконной подсистемы, поэтому думаю даже можно вызвать RegisterClass в одном процессе, а создать окно этого класса в другом процессе.
Насколько я знаю, регистрация оконного класса действует только в пределах процесса.
Так, например, можно иметь в одном процессе кнопку с классическим оформлением, а
в другом - с визуальным (выпуклым, в стиле Common Controls 6.0).
Хотя класс в обоих случаях один и тот же - "button".
1
903 / 424 / 159
Регистрация: 02.04.2014
Сообщений: 1,206
28.01.2017, 10:06 26
Убежденный, да, был не прав. Между разными процессами регистрированные оконные классы не видятся.
0
2 / 2 / 0
Регистрация: 27.10.2016
Сообщений: 48
28.01.2017, 10:47  [ТС] 27
wmaster575, если засунуть создание окна на case btn какой нибудь то пока кнопку не нажмешь окно не будет занимать ОЗУ.. Ну т.е. Экземпляра окна не будет существовать в памяти... Тем самым можно освободить память..если не всеми окнами в проге пользуешься

Верно?
0
31 / 31 / 15
Регистрация: 02.02.2015
Сообщений: 152
28.01.2017, 12:39 28
NSXfl, да.
0
0 / 0 / 0
Регистрация: 29.01.2017
Сообщений: 9
29.01.2017, 15:32 29
Вы можете создать отдельный класс окна, прописав в нем функции создания класса, оконной процедуры и добавления элементов.
Затем создавать экземпляр этого своего класса в WinMain. выглядеть будет примерно так ваш WinMain:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int iCmdShow)
{
xWindow * wnd = new xWindow(hInst);//Экземпляр класса
    if (!wnd->Add_WndClass(hInst)) return false //Добавление класса окна;
    if (!wnd->Add_Wnd(hInst, iCmdShow)) return false //Создание окна;
    if (!wnd->Add_Wnd_Control(hInst, iCmdShow)) return false;//Добавление элементов управления
 
    MSG msg;
 
    while (GetMessage(&msg, NULL, NULL, NULL)>0)
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}
Если интересно могу ссылку дать хорошую.
0
2 / 2 / 0
Регистрация: 27.10.2016
Сообщений: 48
29.01.2017, 16:05  [ТС] 30
Orangutang, давай почитаю, думаю понадобится такая возможность
0
0 / 0 / 0
Регистрация: 29.01.2017
Сообщений: 9
29.01.2017, 16:17 31
вот ссылочка!
http://www.catch22.net/tuts/custom-controls

Я не могу понять, как здесь вставлять картинки, если надо создать свою тему...
0
29.01.2017, 16:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.01.2017, 16:17
Помогаю со студенческими работами здесь

Закрытие одного окна по таймеру с последующем открытием другого окна
Приветствую! Необходимо создать приветственное окно для программы. Сначала должно открываться...

Как связать сигнал одного окна и слот другого окна
Здравствуйте! Такой вопрос: Имеется главное окно MainWindow и диалоговое окно Dialog. На диалоговом...

Подстроить размер окна относительно размера другого окна в X11
Есть два риложения, у обоих устанавливается атрибут WA_X11NetWmWindowTypeaDock. Сначала запускается...

Передача информации из текстбоксов одного окна в таблицу другого окна
Доброго времени суток, пишу программу для mac os x, нужна подсказка, как сделать (не прошу делать,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru