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

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

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

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

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

Не могу понять,как задать пользовательский интерфейс проге с окном консоли. Как соответственно: о каком пользовательском интерфейсе может быть речь в окне консоли?
Если прога составлена как ВИН32-приложение. Файлом include....
В чём вопрос,можно ли запись программки на скорость хим реакции,что сделана как ВИН32 приложением,сделать её как приложение Виндус-аппликашн? Мне кажется данное приложение должно поддерживать функции пользовательского интерфейса(вроде название говорит само за себя)
Кто что думает? Можно прогу рабочую в окне консоли,продолжить иным приложением?
Просто мне надо задать проге пользовательский интерфейс,а я поглядела даже книгу по программированию именно для вин32 приложений,там почти всё под консоль,а в книге о пользовательском интерфейсе ничего не сказано о том,какого типа должен быть файл.
НО я просто думаю,что пользовательский интерфейс - это не для ВИН32 - приложений...
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
2786 / 1372 / 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
2786 / 1372 / 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. Вот для таких библиотек, как правило, и нужны дополнительные хедеры и библиотеки.
Не написано ничего насчёт этого у Никиты Культина..
там у него описываются свойства формы,компонентов и пр... Так какие библиотеки и пр...нужны для этого,чтобы дать хотя бы тот простой пользовательский интерфейс,как в той книге?
Или выложить проект на форум? так боюсь,что кто-нибудь что-то не то скажет,что я ничего не хочу делать..
Я хочу рискнуть сделать сама...Просто надо мне толчок в этой теме...
Ни в одной книге нет полностью ответов на все вопросы,что мне нужны..Хотя их и так у меня уже три,и то я думаю,этим дело не ограничится....
Даемоник
41 / 41 / 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
2786 / 1372 / 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
2786 / 1372 / 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
2786 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
14.11.2009, 00:31     Пользовательский интерфейс #14
Цитата Сообщение от MotherBoard Посмотреть сообщение
Типы,ветвления,Свищи - это всё - если я не ошибаюсь - можно использовать и в оконном приложении.....
Это не завсит от того, оконное это приложение или консольное. Язык - он и а африке язык!

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

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

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

и т.д.
MotherBoard
Путешественница
1250 / 478 / 11
Регистрация: 22.02.2009
Сообщений: 2,843
14.11.2009, 10:38  [ТС]     Пользовательский интерфейс #15
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
Edit->Text - будет содеражать текст, который введен.
Edit->OnChange() - данная функция выполняется когда будет происходить изменения в поле ввода.
так это классы! А я думала так...пояснения к делу...
А вот другая запись,это надо писать,или это так - пояснение...???
Начинается обычно : Void_fastcall TForm::...............
Это класс или что? нужно ли это писать перед назначением кнопок?
accept
4817 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
14.11.2009, 12:10     Пользовательский интерфейс #16
Цитата Сообщение от MotherBoard
Как соответственно: о каком пользовательском интерфейсе может быть речь в окне консоли?
о неграфическом
когда пользователь управляет программой через консоль
скорее всего это меню, где можно выбирать пункты, его можно написать на экране и ждать ввода номера пункта, а потом по номеру выбирать функцию
Monte-Cristo
2786 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
14.11.2009, 12:56     Пользовательский интерфейс #17
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от MotherBoard Посмотреть сообщение
Начинается обычно : Void_fastcall TForm::...............
1. Да. Это класс TForm. Ты описываешь метод класса TForm. Читай о классах. Я не могу тебе на форуме прочитать курс ООП.

2. Ты сама ничего не должна писать. Когда ты создашь Event (событие) для кнопки, это автоматически напишется, и курсор переместить в редактор кода, где ты будешь описывать действие по нажатию на кнопку.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2009, 19:21     Пользовательский интерфейс
Еще ссылки по теме:

C++ Пользовательский operator new(size_t)
Пользовательский интерфейс в С++ C++
Пользовательский интерфейс в 80-е C++
C++ Queue и пользовательский класс
C++ Пользовательский facet

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

Или воспользуйтесь поиском по форуму:
MotherBoard
Путешественница
1250 / 478 / 11
Регистрация: 22.02.2009
Сообщений: 2,843
14.11.2009, 19:21  [ТС]     Пользовательский интерфейс #18
Теперь более-менее поняла! Вот оно то,что мне и было нужно... Чего я и хотела узнать...
Имеет ли какое отношение файл инклад к файлу с пользовательским интерфейсом,оказывается,нет.
Спросила у препода,так я примерно и догадывалась,что не ВИН32 должно быть приложение,а именно вот это: ТФорм
И последнее: вот эти все комментарии:это прога, окказывается, прописывает события..
Всем спасибо!
теперь я более-менее поняла.. А далее у меня книги есть,если что неясно будет,спрошу!
На то вы форум и есть...
Yandex
Объявления
14.11.2009, 19:21     Пользовательский интерфейс
Ответ Создать тему
Опции темы

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