Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.59
MotherBoard
Путешественница
1250 / 478 / 11
Регистрация: 22.02.2009
Сообщений: 2,843
#1

Пользовательский интерфейс - C++

13.11.2009, 00:18. Просмотров 3010. Ответов 17

Не могу понять,как задать пользовательский интерфейс проге с окном консоли. Как соответственно: о каком пользовательском интерфейсе может быть речь в окне консоли?
Если прога составлена как ВИН32-приложение. Файлом include....
В чём вопрос,можно ли запись программки на скорость хим реакции,что сделана как ВИН32 приложением,сделать её как приложение Виндус-аппликашн? Мне кажется данное приложение должно поддерживать функции пользовательского интерфейса(вроде название говорит само за себя)
Кто что думает? Можно прогу рабочую в окне консоли,продолжить иным приложением?
Просто мне надо задать проге пользовательский интерфейс,а я поглядела даже книгу по программированию именно для вин32 приложений,там почти всё под консоль,а в книге о пользовательском интерфейсе ничего не сказано о том,какого типа должен быть файл.
НО я просто думаю,что пользовательский интерфейс - это не для ВИН32 - приложений...
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2009, 00:18     Пользовательский интерфейс
Посмотрите здесь:

Пользовательский интерфейс - C++
Доброго времени суток! У меня стал такой вопрос, хочется создать свой, пользовательский интерфейс, а не пользоваться стандартными...

Пользовательский интерфейс в 80-е - C++
Задался вопросом, как до появления параллельного программирования осуществлялось взаимодействие с пользователем в режиме реального времени?

Пользовательский интерфейс в С++ - C++
Мне нужен пользовательский интерфейс(кнопки, отдельный окна настроек, чекбоксы и тп.) на сервере. Как его лучше делать используя Qt или MFC...

Пользовательский интерфейс - C++
Доброго времени суток, есть вопрос о пользовательском интерфейсе верней как его создать. Хочу именно на Си не на Cи++ не С# только Си(пишу...

Cделать пользовательский интерфейс - C++
Всем доброе утро!! Помогите пожалуйста сделать пользовательский интерфейс к задачке.

Пользовательский интерфейс к программе с Matrix - C++
Все доброго дня!! Перейду стразу к делу: Есть рабочая программа с Matrix, и мне надо сделать к ней пользовательский интерфейс, типа когда...

Составить программу имитирующую пользовательский интерфейс - C++
Составить программу имитирующую пользовательский интерфейс с использованием меню, переключателей и радио кнопок.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
thedrill
1 / 1 / 0
Регистрация: 12.11.2009
Сообщений: 8
13.11.2009, 03:04     Пользовательский интерфейс #2
там говориться просто о меню, красивого ты там нечего не сделаешь, вот например: написать программу калькулятор (+,-,*,/). Оформить интерфейс. Вот как у меня получилось:

1.Сумма
2.Разность
3.Умножение
4.Деление

Пункты можно выбирать с помощю клавиатурных стрелок (up,down) или-же нажать 1..4.
MotherBoard
Путешественница
1250 / 478 / 11
Регистрация: 22.02.2009
Сообщений: 2,843
13.11.2009, 12:03  [ТС]     Пользовательский интерфейс #3
Видела я прогу калькулятор и пр... У Никиты Культина"С++ Булдер в задачах и примерах" там много прог со скромным интерфейсом...
Меня больше волнует суть приложений,когда мы открываем новый проект.Мне кажется он не ВИН32 должен быть,чтобы работать с пользовательским интерфейсом...
И в то же время куда-то надо ли девать файл include,написанный и работающий в окне консоли?Если мне именно для проги,написанной как ВИН32 надо задавать пользовательский интерфейс.
Я же ещё только учусь....
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
13.11.2009, 12:08     Пользовательский интерфейс #4
Цитата Сообщение от MotherBoard Посмотреть сообщение
Мне кажется он не ВИН32 должен быть,чтобы работать с пользовательским интерфейсом...
Это только тебе кажется.


Цитата Сообщение от MotherBoard Посмотреть сообщение
И в то же время куда-то надо ли девать файл include,написанный и работающий в окне консоли?Если мне именно для проги,написанной как ВИН32 надо задавать пользовательский интерфейс.
Я же ещё только учусь....
Можешь по-русски спросить, ничего не понятно.
MotherBoard
Путешественница
1250 / 478 / 11
Регистрация: 22.02.2009
Сообщений: 2,843
13.11.2009, 12:34  [ТС]     Пользовательский интерфейс #5
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
Это только тебе кажется.
Можешь по-русски спросить, ничего не понятно.
Здесь говорите одно,что только так кажется...
В институте сиадмин сказал,что для пользовательского интерфейса нужно файл давать иным приложением,нежели ВИН32..
Так если правильно я понимаю,то можно просто продолжить файл,который как ВИН32-приложение?
Короче..теряюсь в догадках....
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
13.11.2009, 12:53     Пользовательский интерфейс #6
MotherBoard, короче, как я понял, ты сама не можешь выразить что тебе сказали, или коверкаешь. Но внесу ясность.

Win32 - это название API.

Как говорит wiki:
Win32 — 32-разрядный API для современных версий Windows. Самая популярная ныне версия. Базовые функции этого API реализованы в DLL kernel32.dll и advapi32.dll; базовые модули GUI — в user32.dll и gdi32.dll. Win32 появился вместе с Windows NT и затем был перенесён (в несколько ограниченном виде) в системы серии Windows 9x. В современных версиях Windows, происходящих от Windows NT, работу Win32 GUI обеспечивают два модуля: csrss.exe (Client/Server Runtime Subsystem), работающий в пользовательском режиме, и win32k.sys в режиме ядра. Работу же системных Win32 API обеспечивает ядро - ntoskrnl.exe
Т.е. любое Windows-приложение можно называть Win32, так как любая взаимосвязь программы с ОС происходит именно через WinAPI.

В Visual C++ в разделе Win32, есть два вида приложений:
1. Win32 Console Application
2. Win32 Project

Под первым понимают обычное консольное приложение (стандартный C++, без какие либо дополнительных/специфических хедеров с дополнительными классам и т.д.)

Под вторым, как правило, оконное приложение (хотя если быть точнее, приложение не консольной сессии - начинающееся с WinMain, а не main), написанное на чистом WinAPI. Т.е., если создавать не empty project у тебя будет созданно просто оконное приложение, в качестве примера. Основным хедером в оконных приложениях является windows.h.

Добавлено через 1 минуту
Создание окон просиходит через WinAPI, другое дело, что существуеют всякие MFC, VCL, QT которые призваны упростить создание окон, и являются как-бы классовыми оболочками над WinAPI. Вот для таких библиотек, как правило, и нужны дополнительные хедеры и библиотеки.
MotherBoard
Путешественница
1250 / 478 / 11
Регистрация: 22.02.2009
Сообщений: 2,843
13.11.2009, 14:38  [ТС]     Пользовательский интерфейс #7
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
В Visual C++ в разделе Win32, есть два вида приложений:
1. Win32 Console Application
2. Win32 Project
А если среда разработки Борланд С++?

Цитата Сообщение от Monte-Cristo Посмотреть сообщение
Создание окон просиходит через WinAPI, другое дело, что существуеют всякие MFC, VCL, QT которые призваны упростить создание окон, и являются как-бы классовыми оболочками над WinAPI. Вот для таких библиотек, как правило, и нужны дополнительные хедеры и библиотеки.
Не написано ничего насчёт этого у Никиты Культина..
там у него описываются свойства формы,компонентов и пр... Так какие библиотеки и пр...нужны для этого,чтобы дать хотя бы тот простой пользовательский интерфейс,как в той книге?
Или выложить проект на форум? так боюсь,что кто-нибудь что-то не то скажет,что я ничего не хочу делать..
Я хочу рискнуть сделать сама...Просто надо мне толчок в этой теме...
Ни в одной книге нет полностью ответов на все вопросы,что мне нужны..Хотя их и так у меня уже три,и то я думаю,этим дело не ограничится....
Даемоник
42 / 42 / 3
Регистрация: 22.05.2009
Сообщений: 97
13.11.2009, 15:08     Пользовательский интерфейс #8
Как простой пример, сделанный в билдере с пустого проекта.
Test.cpp
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include "Test.h"
 
HBRUSH hBlueBrush,hGreenBrush;
int sw=0;
 
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, int)
{
        char szClassName[]="Main Window";
        char szTitle[]="Программа";
        MSG msg;
        WNDCLASS wc;
 
        ZeroMemory(&wc,sizeof(wc));
        wc.lpfnWndProc=WndProc;
        wc.hInstance=hInst;
        wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
        wc.hCursor=LoadCursor(NULL,IDC_ARROW);
        wc.lpszMenuName="Main";
        wc.lpszClassName=szClassName;
        RegisterClass(&wc);
 
        HWND hwnd=CreateWindow(szClassName,szTitle,
                WS_OVERLAPPEDWINDOW, 10,10,200,100,
                HWND_DESKTOP,NULL,hInst,NULL);
        ShowWindow(hwnd,SW_SHOWNORMAL);
 
        while(GetMessage(&msg,NULL,0,0))
                DispatchMessage(&msg);
        return 0;
}
 
LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,
                        WPARAM wParam,LPARAM lParam)
{
        switch(msg){
                HANDLE_MSG(hwnd,WM_COMMAND,OnCommand);
                HANDLE_MSG(hwnd,WM_CREATE,OnCreate);
                HANDLE_MSG(hwnd,WM_PAINT,OnPaint);
                HANDLE_MSG(hwnd,WM_DESTROY,OnDestroy);
                default:
                        return (DefWindowProc(hwnd,msg,wParam,lParam));
                }
}
 
BOOL OnCreate(HWND,LPCREATESTRUCT)
{
        hBlueBrush=CreateSolidBrush(RGB(100,100,255));
        hGreenBrush=CreateSolidBrush(RGB(100,255,100));
        return TRUE;
}
 
void OnCommand(HWND hwnd, int id, HWND, UINT)
{
        switch(id)
        {
                case MI_BLUE:
                        sw=1;
                        InvalidateRect(hwnd,NULL,TRUE);
                        break;
                case MI_GREEN:
                        sw=2;
                        InvalidateRect(hwnd,NULL,TRUE);
                        break;
                case MI_EXIT:
                        DestroyWindow(hwnd);
    }
}
 
void OnPaint(HWND hwnd)
{
        PAINTSTRUCT ps;
        HDC hdc=BeginPaint(hwnd,&ps);
        if(0==sw)
                InvalidateRect(hwnd,NULL,TRUE);
        if(1==sw)
                FillRect(hdc,&ps.rcPaint,hBlueBrush);
        if(2==sw)
                FillRect(hdc,&ps.rcPaint,hGreenBrush);
        EndPaint(hwnd,&ps);
}
 
void OnDestroy(HWND)
{
        PostQuitMessage(0);
}

Test.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <windows.h>
#include <windowsx.h>
 
#define MI_BLUE 100
#define MI_GREEN 101
#define MI_EXIT 102
 
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
BOOL OnCreate(HWND, LPCREATESTRUCT);
void OnPaint(HWND);
void OnCommand(HWND,int,HWND,UINT);
void OnDestroy(HWND);

Test.rc
C++
1
2
3
4
5
6
7
8
9
10
#include "Test.h"
 
Main Menu{
        POPUP "&Фон"{
                MENUITEM "&Blue",MI_BLUE
                MENUITEM "&Green",MI_GREEN
                MENUITEM SEPARATOR
                MENUITEM "&EXIT",MI_EXIT
                }
}
MotherBoard
Путешественница
1250 / 478 / 11
Регистрация: 22.02.2009
Сообщений: 2,843
13.11.2009, 15:56  [ТС]     Пользовательский интерфейс #9
Даемоник, А если у меня уже прога,работающая в окне консоли,такая же большая,как ваш первый тест(даже чуть больше)
суть работы программы: Вводите дозировки данных(переменных),а прога определяет скорость хим. реакции...
То что? Убирать команду:
return 0
}
И подключать библиотеку Виндус.h?
И назначать данные свойств формы и пр..
В чём одна из моих загвоздок...
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
13.11.2009, 22:42     Пользовательский интерфейс #10
Цитата Сообщение от MotherBoard Посмотреть сообщение
Не написано ничего насчёт этого у Никиты Культина..
там у него описываются свойства формы,компонентов и пр... Так какие библиотеки и пр...нужны для этого,чтобы дать хотя бы тот простой пользовательский интерфейс,как в той книге?
Билдер - это VCL. Тебе ничего подключать не надо. Все уже подключено. Создаешь новое приложение (в Builder 6 - это Form Application) и есть у формы, кнопок свойства и т.д.
MotherBoard
Путешественница
1250 / 478 / 11
Регистрация: 22.02.2009
Сообщений: 2,843
13.11.2009, 22:55  [ТС]     Пользовательский интерфейс #11
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
Билдер - это VCL. Тебе ничего подключать не надо. Все уже подключено. Создаешь новое приложение (в Builder 6 - это Form Application) и есть у формы, кнопок свойства и т.д.
Вот так уже понятнее...Про Application мне и в институте сказали..
То есть,если я правильно понимаю,то файл о пользовательском интерфейсе так и должен начинаться сразу с назначения кнопок?
А туда уже потом в зависимости от назначения ставить функции с консольного файла..
Но когда я буду компилировать,консольный файл уже не нужен будет?
Если я правильно поняла: одна и та же прога в окне консоли и в варианте с пользовательским интерфейсом друг от друга не зависят? Это просто два разных варианта...
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
13.11.2009, 23:37     Пользовательский интерфейс #12
Цитата Сообщение от MotherBoard Посмотреть сообщение
файл о пользовательском интерфейсе
в Билдере нет такого. Да и не нигде. Ты пишешь программу и используешь нужные тебе бибилотеки для создания интерфейса.. или уже проект создан специальным образом - например VCL в билдере. Когда создаешь Form Application, у тебя будет совершенно другая структура (не такая как в коснольном прилоежнии)

Что значит коснольный файл? У тебя или VCL-оконное прилоежние или консольное. Структура слишком различная.
MotherBoard
Путешественница
1250 / 478 / 11
Регистрация: 22.02.2009
Сообщений: 2,843
13.11.2009, 23:48  [ТС]     Пользовательский интерфейс #13
Есть консольное,а теперь надо оконное...
Функции само собой по разному писаться будут...
НО переменные останутся...
Если я объявляла переменные с типом данных в консоли...
То тут я должна буду задать соответствующие поля для ввода этих переменных....
Хотя тип всё равно наверное придётся прописывать...
Типы,ветвления,Свищи - это всё - если я не ошибаюсь - можно использовать и в оконном приложении.....
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
14.11.2009, 00:31     Пользовательский интерфейс #14
Цитата Сообщение от MotherBoard Посмотреть сообщение
Типы,ветвления,Свищи - это всё - если я не ошибаюсь - можно использовать и в оконном приложении.....
Это не завсит от того, оконное это приложение или консольное. Язык - он и а африке язык!

Цитата Сообщение от MotherBoard Посмотреть сообщение
То тут я должна буду задать соответствующие поля для ввода этих переменных....
Я поэтому и хотел, чтобы ты хоть почитала об основах WinAPI, хотя бы о том, как это все происходит. Поля ввода, кнопки, и другие контролы - это тоже окна. Ты получаешь из них значения, отлавливаешь сообщения и обрабатываешь. Это все на WinAPI делается. А в билдере у тебя все реализовано классами...

Например, класс TEdit (поле ввода)

Edit->Text - будет содеражать текст, который введен.
Edit->OnChange() - данная функция выполняется когда будет происходить изменения в поле ввода.

и т.д.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2009, 10:38     Пользовательский интерфейс
Еще ссылки по теме:

Пользовательский класс - C++
Не могу переделать программу под данное условие: вот код: #include &quot;stdafx.h&quot; #include &lt;math.h&gt; #include &lt;iostream&gt; ...

Пользовательский facet - C++
Добрый день, господа! Для определенного класса реализована возможность вывода в поток (ostream/wostream). Для полноценного логирования...

Определить пользовательский класс. - C++
Доброго времени суток, зашел в тупик в лабораторной) вот задание: Определить пользовательский класс СТРАНА, имеющий: название...

Queue и пользовательский класс - C++
Недавно начал изучать STL, хотел поработать с queue. Можно ли очередь с типом, который я создал сам? Например class Simple { int a; ...

Пользовательский operator new(size_t) - C++
Всем привет! Подскажите пожалуйста, как так получается, что при перегрузке operator new (например, в пользовательском классе) дальнейший...


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

Или воспользуйтесь поиском по форуму:
MotherBoard
Путешественница
1250 / 478 / 11
Регистрация: 22.02.2009
Сообщений: 2,843
14.11.2009, 10:38  [ТС]     Пользовательский интерфейс #15
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
Edit->Text - будет содеражать текст, который введен.
Edit->OnChange() - данная функция выполняется когда будет происходить изменения в поле ввода.
так это классы! А я думала так...пояснения к делу...
А вот другая запись,это надо писать,или это так - пояснение...???
Начинается обычно : Void_fastcall TForm::...............
Это класс или что? нужно ли это писать перед назначением кнопок?
Yandex
Объявления
14.11.2009, 10:38     Пользовательский интерфейс
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru