Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.70/43: Рейтинг темы: голосов - 43, средняя оценка - 4.70
Путешественница
1250 / 478 / 11
Регистрация: 22.02.2009
Сообщений: 2,842
1

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

13.11.2009, 00:18. Показов 8832. Ответов 17
Метки с (Все метки)

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

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

Пользовательский интерфейс
Доброго времени суток, есть вопрос о пользовательском интерфейсе верней как его создать. Хочу...

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

Пользовательский интерфейс в С++
Мне нужен пользовательский интерфейс(кнопки, отдельный окна настроек, чекбоксы и тп.) на сервере....

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

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

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


Цитата Сообщение от MotherBoard Посмотреть сообщение
И в то же время куда-то надо ли девать файл include,написанный и работающий в окне консоли?Если мне именно для проги,написанной как ВИН32 надо задавать пользовательский интерфейс.
Я же ещё только учусь....
Можешь по-русски спросить, ничего не понятно.
0
Путешественница
1250 / 478 / 11
Регистрация: 22.02.2009
Сообщений: 2,842
13.11.2009, 12:34  [ТС] 5
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
Это только тебе кажется.
Можешь по-русски спросить, ничего не понятно.
Здесь говорите одно,что только так кажется...
В институте сиадмин сказал,что для пользовательского интерфейса нужно файл давать иным приложением,нежели ВИН32..
Так если правильно я понимаю,то можно просто продолжить файл,который как ВИН32-приложение?
Короче..теряюсь в догадках....
0
2816 / 1407 / 107
Регистрация: 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. Вот для таких библиотек, как правило, и нужны дополнительные хедеры и библиотеки.
0
Путешественница
1250 / 478 / 11
Регистрация: 22.02.2009
Сообщений: 2,842
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. Вот для таких библиотек, как правило, и нужны дополнительные хедеры и библиотеки.
Не написано ничего насчёт этого у Никиты Культина..
там у него описываются свойства формы,компонентов и пр... Так какие библиотеки и пр...нужны для этого,чтобы дать хотя бы тот простой пользовательский интерфейс,как в той книге?
Или выложить проект на форум? так боюсь,что кто-нибудь что-то не то скажет,что я ничего не хочу делать..
Я хочу рискнуть сделать сама...Просто надо мне толчок в этой теме...
Ни в одной книге нет полностью ответов на все вопросы,что мне нужны..Хотя их и так у меня уже три,и то я думаю,этим дело не ограничится....
0
42 / 42 / 8
Регистрация: 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
                }
}
0
Путешественница
1250 / 478 / 11
Регистрация: 22.02.2009
Сообщений: 2,842
13.11.2009, 15:56  [ТС] 9
Даемоник, А если у меня уже прога,работающая в окне консоли,такая же большая,как ваш первый тест(даже чуть больше)
суть работы программы: Вводите дозировки данных(переменных),а прога определяет скорость хим. реакции...
То что? Убирать команду:
return 0
}
И подключать библиотеку Виндус.h?
И назначать данные свойств формы и пр..
В чём одна из моих загвоздок...
0
2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
13.11.2009, 22:42 10
Цитата Сообщение от MotherBoard Посмотреть сообщение
Не написано ничего насчёт этого у Никиты Культина..
там у него описываются свойства формы,компонентов и пр... Так какие библиотеки и пр...нужны для этого,чтобы дать хотя бы тот простой пользовательский интерфейс,как в той книге?
Билдер - это VCL. Тебе ничего подключать не надо. Все уже подключено. Создаешь новое приложение (в Builder 6 - это Form Application) и есть у формы, кнопок свойства и т.д.
0
Путешественница
1250 / 478 / 11
Регистрация: 22.02.2009
Сообщений: 2,842
13.11.2009, 22:55  [ТС] 11
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
Билдер - это VCL. Тебе ничего подключать не надо. Все уже подключено. Создаешь новое приложение (в Builder 6 - это Form Application) и есть у формы, кнопок свойства и т.д.
Вот так уже понятнее...Про Application мне и в институте сказали..
То есть,если я правильно понимаю,то файл о пользовательском интерфейсе так и должен начинаться сразу с назначения кнопок?
А туда уже потом в зависимости от назначения ставить функции с консольного файла..
Но когда я буду компилировать,консольный файл уже не нужен будет?
Если я правильно поняла: одна и та же прога в окне консоли и в варианте с пользовательским интерфейсом друг от друга не зависят? Это просто два разных варианта...
0
2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
13.11.2009, 23:37 12
Цитата Сообщение от MotherBoard Посмотреть сообщение
файл о пользовательском интерфейсе
в Билдере нет такого. Да и не нигде. Ты пишешь программу и используешь нужные тебе бибилотеки для создания интерфейса.. или уже проект создан специальным образом - например VCL в билдере. Когда создаешь Form Application, у тебя будет совершенно другая структура (не такая как в коснольном прилоежнии)

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

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

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

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

и т.д.
0
Путешественница
1250 / 478 / 11
Регистрация: 22.02.2009
Сообщений: 2,842
14.11.2009, 10:38  [ТС] 15
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
Edit->Text - будет содеражать текст, который введен.
Edit->OnChange() - данная функция выполняется когда будет происходить изменения в поле ввода.
так это классы! А я думала так...пояснения к делу...
А вот другая запись,это надо писать,или это так - пояснение...???
Начинается обычно : Void_fastcall TForm::...............
Это класс или что? нужно ли это писать перед назначением кнопок?
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
14.11.2009, 12:10 16
Цитата Сообщение от MotherBoard
Как соответственно: о каком пользовательском интерфейсе может быть речь в окне консоли?
о неграфическом
когда пользователь управляет программой через консоль
скорее всего это меню, где можно выбирать пункты, его можно написать на экране и ждать ввода номера пункта, а потом по номеру выбирать функцию
0
2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
14.11.2009, 12:56 17
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от MotherBoard Посмотреть сообщение
Начинается обычно : Void_fastcall TForm::...............
1. Да. Это класс TForm. Ты описываешь метод класса TForm. Читай о классах. Я не могу тебе на форуме прочитать курс ООП.

2. Ты сама ничего не должна писать. Когда ты создашь Event (событие) для кнопки, это автоматически напишется, и курсор переместить в редактор кода, где ты будешь описывать действие по нажатию на кнопку.
0
Путешественница
1250 / 478 / 11
Регистрация: 22.02.2009
Сообщений: 2,842
14.11.2009, 19:21  [ТС] 18
Теперь более-менее поняла! Вот оно то,что мне и было нужно... Чего я и хотела узнать...
Имеет ли какое отношение файл инклад к файлу с пользовательским интерфейсом,оказывается,нет.
Спросила у препода,так я примерно и догадывалась,что не ВИН32 должно быть приложение,а именно вот это: ТФорм
И последнее: вот эти все комментарии:это прога, окказывается, прописывает события..
Всем спасибо!
теперь я более-менее поняла.. А далее у меня книги есть,если что неясно будет,спрошу!
На то вы форум и есть...
0
14.11.2009, 19:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.11.2009, 19:21
Помогаю со студенческими работами здесь

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

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

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

Пользовательский facet
Добрый день, господа! Для определенного класса реализована возможность вывода в поток...


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

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