Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.230.76.153] |
|
Страницы: (4) [1] 2 3 ... Последняя » все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Поле прочтения темы GUI для консольной программы на C++ (Visual Studio 2010) решил попробовать создать приложение с помощью конструктора диалогов Visual C++ 2010:
#include <string> #include <iostream> #include <windows.h> #include "resource.h" #include <stdio.h> BOOL CALLBACK DlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_INITDIALOG: { return FALSE; } case WM_COMMAND: { switch (LOWORD(wParam)) { case ID_OK: EndDialog(hwnd,1); return TRUE; case ID_CANCEL: EndDialog(hwnd,0); return TRUE; } } case WM_CLOSE: { EndDialog(hwnd,0); return FALSE; } } return FALSE; } 1. Как сделать так, чтобы диалог: - размещался в центре экрана; - разворачивался на весь экран, при этом кнопки были бы в правом нижнем углу 2. В большинстве книг по WinAPI описано создание класса окна в памяти с последующим созданием экземпляра класса, а не с помощью конструктора диалогов. Посоветуйте, пожалуйста, книгу или статьи с подробным описанием возможности создания программ с использованием конструктора диалогов (вызов из одного диалога другого, настройка вида диалогов в процессе работы программы, примеры диалогов с разными контролами, создание событий для контролов и др.). Проект прикрепил. Прикреплённый файлWin32dialog.zip (3,63 Кбайт, скачиваний: 140) |
Сообщ.
#2
,
|
|
|
Цитата tumanovalex @ - размещался в центре экрана DS_CENTER Цитата tumanovalex @ - разворачивался на весь экран, при этом кнопки были бы в правом нижнем углу Ручками, в обработчиках POSCHANGE/SIZE. |
Сообщ.
#3
,
|
|
|
У меня основная функция имеет вид (забыл ее указать в первом сообщении:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { int ret = DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, (DLGPROC)DlgProc); if (ret == 0) { MessageBox(NULL, "Нажата кнопка \"Отмена\"","Информация о нажатой кнопке", MB_OK|MB_ICONINFORMATION); } else { MessageBox(NULL, "Нажата кнопка \"ОК\"","Информация о нажатой кнопке", MB_OK|MB_ICONINFORMATION); } return ret; } |
Сообщ.
#4
,
|
|
|
Цитата tumanovalex @ А как указать, что это окно должно размещаться по центру? В редакторе ресурсов, в режиме конструктора диалогов -- свойство "Position -> Center" |
Сообщ.
#5
,
|
|
|
Спасибо, получилось. Теперь буду разбираться с POSCHANGE/SIZE.
|
Сообщ.
#6
,
|
|
|
У меня диалоговое окно будет содержать много контролов, поэтому хотелось бы сразу развернуть его на весь экран, а потом уже подбирать расположение контролов на развернутом экране. Подскажите, пожалуйста, как диалог из ресурса сразу развернуть на весь экран.
|
Сообщ.
#7
,
|
|
|
Цитата tumanovalex @ У меня диалоговое окно будет содержать много контролов, поэтому хотелось бы сразу развернуть его на весь экран, а потом уже подбирать расположение контролов на развернутом экране. Подскажите, пожалуйста, как диалог из ресурса сразу развернуть на весь экран. извращенец MFC в зубы и с песней! |
Сообщ.
#8
,
|
|
|
Да не хочу я MFC!!! Хочу все контролировать и попытаться разобраться с Windows API без всяких надстроек. Я не профессиональный программист, сроков создания программы у меня нет, просто очень люблю программирование, Windows и Visual Studio.
|
Сообщ.
#9
,
|
|
|
Цитата tumanovalex @ Да не хочу я MFC!!! Хочу все контролировать и попытаться разобраться с Windows API без всяких надстроек. Я не профессиональный программист, сроков создания программы у меня нет, просто очень люблю программирование, Windows и Visual Studio. c MFC проще, без нее тебя ждет долгий и тернистый путь с Win32 API к тому же еще и на Си Флаг в руки, но не с песней |
Сообщ.
#10
,
|
|
|
Так как все-таки развернуть диалог из ресурсов
int ret = DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, (DLGPROC)DlgProc); |
Сообщ.
#11
,
|
|
|
M Cfon, за дальнейший оффтоп в разделе выпишу банку и РО. Цитата tumanovalex @ Подскажите, пожалуйста, как диалог из ресурса сразу развернуть на весь экран. Уточни, что ты имеешь ввиду под сразу: 1. после создания диалога, 2. в конструкторе диалогов редактора ресурсов? |
Сообщ.
#12
,
|
|
|
Хотелось бы узнать и то, и другое (после создания диалога и в конструкторе диалогов редактора ресурсов)
Добавлено Как сделать после создания диалога - я вроде бы разобрался: case WM_INITDIALOG: { ShowWindow(hwnd, SW_MAXIMIZE); return FALSE; } Добавлено А если в редакторе диалогов можно указать, что окно нужно развернуть на весь экран, то можно редакторе задать положение кнопок (и других контролов), чтобы они были на нужном месте при развернутом окне? |
Сообщ.
#13
,
|
|
|
Цитата tumanovalex @ Вы рассматриваете идею использования окон по средствам WinAPI, а конструктор может лишь генерировать код окна, скажем, создавать так называемый ресурс, который затем подтягивается и используется. За вызов диалогов отвечает Код, а конструктор лишь создает шаблон. Все верно?2. В большинстве книг по WinAPI описано создание класса окна в памяти с последующим созданием экземпляра класса, а не с помощью конструктора диалогов. Тогда получается, что генератор ресурсов не может в ресурс собирать код, который будет что-то делать. Это лишь ресурс, оболочка. Вместе с этим все же, кроме создания этих ресурсов генерируется и код. Это простейший код обращения с ресурсами. Цитата tumanovalex @ Такого сделать по средствам конструктора нельзя. За вызов диалогов отвечает код, и такой код, обычно, пишет программист.возможности создания программ с использованием конструктора диалогов (вызов из одного диалога другого Цитата tumanovalex @ Это уже можно делать в Run-Time, но по средствам вызова функций, которые это делают (т.е. тех самых API Windows).настройка вида диалогов в процессе работы программы, примеры диалогов с разными контролами, создание событий для контролов и др. Поэтому, все же, стоит посмотреть в сторону книг WinAPI, чтобы понять что есть что и как этим управлять в Run-Time. Я рекомендую просмотреть (а может и почитать) книгу Программирование под Windows 95 (том 1) - Ч. Педзолд И пусть Вас не смущает Windows 95, все началось с этими окнами оттуда, появились те самые API. В книге, довольно детально, описаны методы написания программ с таким вот подходом к окнам (когда нужно работать с API голыми руками), подход тех времен. Именно поэтому Cfon написал: Цитата Cfon @ c MFC проще, без нее тебя ждет долгий и тернистый путь с Win32 API к тому же еще и на Си Как вариант, загляните еще на MSDN в документацию на Visual Studio 2010, возможно там задокументировано использование конструктора студии. |
Сообщ.
#14
,
|
|
|
Спасибо за ответ. А почему B.V. указал второй вариант?
|
Сообщ.
#15
,
|
|
|
Ему виднее, конечно.
Но, он попросил уточнить вопрос, а не дал два варианта ответа Вот скрин создания формы. В свойствах "По центру" можно сразу указать, а вот "На весь экран" я не вижу.. В принципе, так можно все свойства смотреть. Просмотреть в оригинальном разрешении. |