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

Графический интерфейс для приложения c++ - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.65
zigr0lf
0 / 0 / 0
Регистрация: 29.05.2013
Сообщений: 8
17.11.2014, 21:07     Графический интерфейс для приложения c++ #1
Мне надо написать графический интерфейс к программе. Выглядеть должно примерно так: два поля для ввода данных (русский текст), одна кнопка. При нажатии на кнопку текст из первого поля попадает в массив char*, проходит преобразование и отображается по втором поле. Код преобразования я уже написал, надо сделать UI. До этого никогда не работал с графическим интерфейсом - только с консолью. С помощью чего можно проще всего реализовать мою задумку?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2014, 21:07     Графический интерфейс для приложения c++
Посмотрите здесь:

Графический интерфейс C++
C++ Графический интерфейс
графический интерфейс приложения C++
C++ Графический интерфейс
C++ IDE для Windows, на которых можно сделать графический интерфейс программы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zelim
77 / 77 / 4
Регистрация: 26.12.2011
Сообщений: 217
17.11.2014, 22:43     Графический интерфейс для приложения c++ #21
Честно говоря, обсуждение расстроило: откуда-то нарисовался OpenGL, еще и Qt добавили.
Убежденный меня опередил, но добавлю и свой вариант решения задачи (проект прикрепил).

Собственно, функция, в которой нужно делать правки:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void Cls_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    switch(id) {
    case IDC_BUTTON1:
        
        int n = Edit_GetTextLength(GetDlgItem(hwnd, IDC_EDIT1));
        TCHAR *str = (TCHAR*) malloc(sizeof(TCHAR)*n);
        Edit_GetText(GetDlgItem(hwnd, IDC_EDIT1), str, n+1);
 
        /*
        ....
        TCHAR str содержит введенную строку. Здесь можно её обработать,
        после этого вывести во второй контрол функцией Edit_SetText
        ....
        */
 
        Edit_SetText(GetDlgItem(hwnd, IDC_EDIT2), str);
        free(str);
        break;
    }
}
На данный момент программа, при нажатии на кнопку, просто копирует текст из первого поля во второе. ТС, можешь обрабатывать текст как угодно
Вложения
Тип файла: rar CyberApp.rar (39.2 Кб, 2 просмотров)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2014, 22:44     Графический интерфейс для приложения c++
Еще ссылки по теме:

C++ Графический интерфейс для игр
Графический интерфейс C++
C++ Графический интерфейс

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

Или воспользуйтесь поиском по форуму:
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
17.11.2014, 22:44     Графический интерфейс для приложения c++ #22
А я так сделаю (фиксированный массив вместо указателя на символ)
C++
#include <windows.h>
 
 
MSG             msg;
HWND            hwnd, edit1, edit2, button;
char            buff[1024];
bool            quit = false;
 
 
LRESULT CALLBACK MsgProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message) {
        case WM_QUIT:       PostQuitMessage(0); break;
        case WM_CLOSE:      PostQuitMessage(0); break;
        case WM_DESTROY:    PostQuitMessage(0); break;
        case WM_COMMAND:
            if (LOWORD(wParam)==777) {
                GetWindowText(edit1, buff, 1024);
                /* ЗДЕСЬ ВАША ФУНКЦИЯ ПРЕОБРАЗОВАНИЯ */
                SetWindowText(edit2, buff);
            }
    }
    return DefWindowProc (hWnd, message, wParam, lParam);
}
 
 
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nCmdShow)
{
    WNDCLASSEX wincl;
    wincl.hInstance     = hInst;
    wincl.lpszClassName = "app";
    wincl.lpfnWndProc   = MsgProc;
    wincl.style         = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
    wincl.cbSize        = sizeof(WNDCLASSEX);
    wincl.hIcon         = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm       = NULL;
    wincl.hCursor       = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName  = NULL;
    wincl.cbClsExtra    = 0;
    wincl.cbWndExtra    = 0;
    wincl.hbrBackground = (HBRUSH)(1);
    RegisterClassEx(&wincl);
 
    hwnd = CreateWindowEx(WS_EX_APPWINDOW, "app", "...", WS_OVERLAPPEDWINDOW, 50, 50, 400, 400, HWND_DESKTOP, NULL, hInst, NULL);
    ShowWindow(hwnd, nCmdShow);
 
    edit1   = CreateWindowEx(WS_EX_CLIENTEDGE, TEXT("Edit"), TEXT(" "), WS_CHILD|WS_VISIBLE|WS_BORDER, 100, 20, 140, 25, hwnd, NULL, NULL, NULL);
    edit2   = CreateWindowEx(WS_EX_CLIENTEDGE, TEXT("Edit"), TEXT(" "), WS_CHILD|WS_VISIBLE|WS_BORDER, 100, 50, 140, 25, hwnd, NULL, NULL, NULL);
    button  = CreateWindow(TEXT("button"), TEXT("Кнопка"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 10, 10, 80, 30, hwnd, (HMENU)777, hInst, NULL);
 
    while ( !quit ) {
        if ( PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) ) {
            if ( msg.message == WM_QUIT )
                quit = true;
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        else {
            Sleep(1);
        }
    }
    return 0;
}
Yandex
Объявления
17.11.2014, 22:44     Графический интерфейс для приложения c++
Ответ Создать тему
Опции темы

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