2 / 2 / 0
Регистрация: 23.09.2010
Сообщений: 47

Несколько вопросов про GUI

01.04.2011, 19:45. Показов 1980. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня несколько вопросов, но все они относятся к разработке GUI, так что я решил не создавать отл=дельную тему для каждого.

1) Изначально был вопрос в том, как создать TabControl - с этим я разобрался
C++
1
CreateWindowEx(0, WC_TABCONTROL,0, WS_CHILD|WS_CLIPCHILDREN|WS_CLIPSIBLINGS|WS_VISIBLE,0, 0, 500, 490, hwnd, (HMENU)NULL, hInst, NULL);
А вот так добавляется вкладка:
C++
1
2
3
4
5
6
7
void AddItemToTab(char *p, int item, HWND tab)
{
TCITEM tci;
tci.pszText=p;
TabCtrl_InsertItem(tab,item,(const TCITEM*)&tci);
TabCtrl_SetItem(tab,item,(const TCITEM*)&tci);
}
Но при попытке создать - вкладка создается, но ее заголовок пустой. Вопрос: Как добавить во вкладку контролы?

2)Суть та же - вкладки. Только теперь на диалогах. Как создать вкладки на Tab Control и на эти вкладки поместить контролы?

3)Какое сообщение посылается при нажатии на кнопку "Закрыть" диалога? Методом тыка удалось выяснить, что это не WM_DESTROY (При попытке закрыть диалог он остается спокоен как йог и даже окно не закрывается)

4)Почему если изменить свойство "Имя класса" у диалога, то он не создается?

5)Использует ли библиотека mfc DotNet? То есть если нет дотнета вообще - прога будет работать?

6)Вопрос, во многом привычки и предпочтений, но что рациональнее и практичнее - интерфейс на WinApi или на MFC, что проще создать и сопровождать и что более востребовано работодателями?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.04.2011, 19:45
Ответы с готовыми решениями:

Несколько важных вопросов.
Вопросов вообще накопилась большая куча, но ограничусь главными 1. может ли испортить жизнь warning предупреждения (и особенно если их ) ...

Несколько глупых вопросов...
Меня интересует несколько вопросов: (под visual 2005 c++ (windows form application) ) 1. Как сделать, чтобы форма была програчной и...

Несколько вопросов по ListBox и ComboBox
Доброго времени суток. Возникло 4 вопроса в ходе написания одного windows forms application: 1) Как сменить название пункта в...

15
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
01.04.2011, 20:05
Создаёшь два диалоговых окна (IDD_PAGE_1, IDD_PAGE_2). Какой правильно стиль задать. не скажу по памяти. В документацию глянь. А код примерно такой.
_page1, _page2 - объекты классов диалогов для каждой вкладки.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
TC_ITEM TabItem;
 
TabItem.mask = TCIF_PARAM;
TabItem.lParam = (LPARAM)_page1;
InsertItem(0, &TabItem);
if( _page1->Create(IDD_PAGE_1, this), L"" )
{
    _page1->ShowWindow(SW_SHOW);
}
 
TabItem.mask = TCIF_PARAM;
TabItem.lParam = (LPARAM)_pag2;
InsertItem(1, &TabItem);
if( _page2->Create(IDD_PAGE_2, this), L"" )
{
    _page2->ShowWindow(SW_HIDE);
}
 
TabItem.mask = TCIF_TEXT;
TabItem.pszText =  "page 1";
SetItem( 0, &TabItem );
 
TabItem.pszText = "page 2";
SetItem( 1, &TabItem );
Добавлено через 2 минуты
6) Если разработка для линукса, то оба варианта не рациональны и не практичны.)
0
2 / 2 / 0
Регистрация: 23.09.2010
Сообщений: 47
01.04.2011, 23:00  [ТС]
Нет, подразумевается чисто Windows-разработка
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
01.04.2011, 23:13
я предпочитаю MFC скорость разработки намного выше
классы разбиты по файлам легче искать
Есть готовые классы (строка, динамический массив,список, и т.д)
если тебе для вкладок нужно разные окна то в MFC есть
CPropertySheet это главное окно в котором будет вкладки
и
CPropertyPage это окно вкладки
в редакторе ресурсов рисуешь диалоги
потом из них создаешь класс производный от CPropertyPage
и вставляешь их в CPropertySheet
и все окно готово
кстати заменой одной переменной
можно сделать из окна свойств Мастер(ну это с кнопками вперед назад)
0
2 / 2 / 0
Регистрация: 23.09.2010
Сообщений: 47
01.04.2011, 23:21  [ТС]
Это-то понятно, но программа на MFC тяжелее и прожорливей WinApiшной. И мне по-прежнему интересно, нужен ли DotNet для MFC
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
01.04.2011, 23:27
Слухи о прожорливости и тормознутости сильно преувеличены
не подключай ненужных библиотек
оптимизируй
используй динамическую линковку и будет тебе щастье
а я как вспомню этот switch
страниц на несколько так плохо становится
0
2 / 2 / 0
Регистрация: 23.09.2010
Сообщений: 47
01.04.2011, 23:32  [ТС]
Вопрос в том, что является ненужным
0
375 / 322 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
02.04.2011, 06:21
Цитата Сообщение от ChinYan Посмотреть сообщение
И мне по-прежнему интересно, нужен ли DotNet для MFC
MFC существовал задолго до появления .NET. MFC по сути является оберткой WinAPI и на .NET никак не завязан.
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
02.04.2011, 06:59
Если тебя так волнует скорость графического интерфейса () пиши на ассемблере.
Знать нужно и WinAPI и MFC и много другого. Зная лишь что-то одно, ты никому не будешь нужен. Это суровая правда жизни. Хотя-бы общее представление иметь необходимо.
.NET используется, да. Раньше - нет, теперь - да. А ещё runtime библиотеки нужны. vcredist.exe которые.
А вот кто востребован, лучше на сайтах по работе посмотри.
0
23 / 20 / 3
Регистрация: 12.08.2010
Сообщений: 206
02.04.2011, 22:45
.NET не используется при MFC и никогда не использовался. Большая часть MFC даже не инкапусулирована, т.к. разрабатывалась много ранее возникновения принципа ООП.

.NET это C++/CLI.
Вообще, для обычного windows приложения вполне логично, на мой взгляд, использовать уже Windows Forms. Потеря 2 миллисекунд, думается мне, это не то, о чем стоит задумываться при выборе между зубодробительными WINAPI && MFC и вполне удобным и заточенным Forms.

Тем более, что никто не запрещает при использовании C++/CLI, дописывать "узкие места" хоть на чистом C++ISO/IEC, хоть на ассемблере, хоть на двоичном коде.
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
02.04.2011, 23:11
Цитата Сообщение от half-node Посмотреть сообщение
.NET это C++/CLI.
про C++/CLI. я узнал неделю назад
Пока балуюсь
Формы это конечно хорошо и быстро
Но возникают вопросы
1 на каких системах будет работать мой код???
2 Мне нужно создать нестандартное окно(контрол) к примеру регулятор(уровня) с тремя бегунками
ограничения минимума, максимума, сам регулятор и шкала уровня сигнала
на MFC я это точно напишу а на C++/CLI???
и где будет быстрее( с учетом что нужно еще выучить язык)
0
23 / 20 / 3
Регистрация: 12.08.2010
Сообщений: 206
02.04.2011, 23:34
1) На системах, где установлен Framework
2) Тут у нас с Вами ситуация схожа. )) Но опять же, повторюсь, именно для создания основного фрейма + все стандартные элементы, быстрее и практичнее создавать через формс. А уже такие нестандартные "штукенции" писать уже на чем душа пожелает. Создать такие элементы можно и на через формс. По поводу скорости разработки утверждать не возьмусь. Не занимался. Повторюсь, CLI не подразумевает отключения стандартного C++. Можно и MFC прицепить.

п.с. С виндовс формс не более чем ознакомлен. Ну а отличия CLI от стандартного C++ столь малозначительны, что учить, практически ничего и не приходится. Хотя, конечно, они есть.
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
02.04.2011, 23:48
вопрос как прицепить?? DLL? или как то в проект можно загнать?
учить я имел ввиду все эти новые классы
иерархию
методы
члены
все таки MFC 10 лет занимаюсь знаю что где
(если не знаю , то знаю куда залезть чтобы прочитать)
и все таки Документ-Вид очень часто бывает удобен
а формы это для диалогов

Добавлено через 3 минуты
Вот сейчас переписываю одну старую программку(интерфейс устарел)
попробую совместно (может еще и шарп попробую)
0
23 / 20 / 3
Регистрация: 12.08.2010
Сообщений: 206
03.04.2011, 00:41
От себя могу посоветовать книгу Айвора Хортона Visual C++. Там идет достаточно подробное сравнение C++ISO/IEC и C++/CLI. От базовых основ до сравнения MFC и Windows Forms.

- формы для диалогов. Под определением формы в Windows Forms подразумевается не только диалоговое окно, но и основной фрейм для окна приложения.

В общем и целом как-то так.


п.с. Очень бы хотелось узнать как у Вас все произойдет, в плане "скрещивания"

Добавлено через 30 минут
UPD: Хортон Visual C++ 2010 полный курс. Забыл уточнить.
0
2 / 2 / 0
Регистрация: 23.09.2010
Сообщений: 47
03.04.2011, 12:09  [ТС]
.NET это C++/CLI.
Спасибо, я в курсе. Проблема была в том, что список версий mfc был сведен в одну таблицу с версиями .Net и сложилось впечатление, что в последних версиях их могли совместить.

Специфика программы требует, чтоб отсутствовали какие-то прослойки, при исключении которых программа работать откажется. Если убить дотнет, то все дотнетовские проги не заработают
0
23 / 20 / 3
Регистрация: 12.08.2010
Сообщений: 206
04.04.2011, 12:58
Ну от прогресса в стиле Microsoft тоже никуда не денешься. Они предлагают достаточно удобное средство разработки, налагая при этом определенные ограничения. Тут уж выбор за нами: использовать и зависеть, или же использовать менее удобные средства, но уже ни от кого и ни от чего не зависеть.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.04.2011, 12:58
Помогаю со студенческими работами здесь

Несколько простых вопросов по MFC
1. В различной литературе исходные коды MFC приложений могут содержать а могут и не содержать в одинаковых объявлениях ключевое слово...

Срочно требуется ответ на несколько вопросов...
Доброго вам дня. У меня появился ряд вопросом по Visual С++. если вам не сложно ответьте мне на них. Как правильно выбирать имена для...

Про c++ и gui
Казуальные вопросы. Никогда не работал с gui. 1) Актуально ли писать gui на qt,gtk? На чём были написаны, ну незнаю Skype, браузеры, и...

Несколько вопросов про VB(код)
Всем доброго времени суток!Есть несколько вопросов и проблем! 1)В программе у меня есть файл 1.reg(См скрин).,с параметрами реестра.Как...

Несколько вопросов про СЕРВО...
Добрый вечер! Решил я посмотреть что такое серво-приводы, - машинки и тд.... и понял что мало чего понял(((( По этому прошу прояснить...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru