Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
 Аватар для FreeZon
8 / 10 / 8
Регистрация: 30.12.2013
Сообщений: 577

Создание контролов (кнопки, textBox, и другие)

28.02.2015, 22:09. Показов 3938. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
По видео уроку... Создал окно, и добавил кнопку.

Main.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
#include <Windows.h>
#include <gdiplus.h>
#pragma comment(lib, "gdiplus.lib")
 
using namespace Gdiplus;
#define width 640
#define height 480
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
 
VOID OnPaint(HDC hdc)
{
    Graphics    graphics(hdc);
    SolidBrush  brush(Color(255, 0, 0, 255));
    FontFamily  fontFamily(L"Times New Roman");
    Font        font(&fontFamily, 24, FontStyleRegular, UnitPixel);
    PointF      pointF(10.0f, 20.0f);
 
    graphics.DrawString(L"Hello World!", -1, &font, pointF, &brush);
}
 
int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    WNDCLASSEX windowClass;
    HWND hwnd;
    MSG uMSG;
    GdiplusStartupInput gdiplusStartupInput;
    ULONG_PTR gdiplusToken;
    memset(&windowClass, 0, sizeof(WNDCLASSEXW));
    windowClass.cbSize = sizeof(WNDCLASSEX);
    windowClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_PEN);
    windowClass.hCursor = LoadCursor(NULL, IDC_ARROW);
    windowClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    windowClass.hInstance = hInstance;
    windowClass.lpfnWndProc = WindowProc;
    windowClass.lpszClassName = "Simple Window";
    RegisterClassEx(&windowClass);
    GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
    hwnd = CreateWindow(windowClass.lpszClassName, "VK-TOOLS", WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX, (GetSystemMetrics(SM_CXSCREEN) - width) / 2, (GetSystemMetrics(SM_CYSCREEN) - height) / 2, width, height, NULL, NULL, NULL,NULL);
    ShowWindow(hwnd, nCmdShow);
    while (GetMessage(&uMSG,hwnd,NULL,NULL))
    {
        TranslateMessage(&uMSG);
        DispatchMessage(&uMSG);
    }
    GdiplusShutdown(gdiplusToken);
    return uMSG.wParam;
}
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
    case WM_CREATE:
        CreateWindow("BUTTON", "Привет", WS_CHILD | WS_VISIBLE, 40, 100, 150, 70, hwnd, (HMENU)1, NULL, NULL);
        break;
    case WM_COMMAND:
        switch (wParam)
        {
        case 1:
            MessageBox(hwnd, "Привет", "Сообщение", MB_YESNO|MB_ICONQUESTION);
            break;
        }
        break;
    case WM_CLOSE:
        ExitProcess(0);
        break;
    case WM_PAINT:
        HDC hDC;
        PAINTSTRUCT pt;
        hDC = BeginPaint(hwnd, &pt);
        OnPaint(hDC);
        EndPaint(hwnd, &pt);
        break;
    default:
        return DefWindowProc(hwnd, uMsg, wParam, lParam);
        break;
    }
}
Вопрос в следующем, в видео уроке не было не чего про другие контролы, такие как textBox(multiline) pictureBox и другие.
Кнопка, как вы можете видеть из цикла switch добавляется так:
C++
1
CreateWindow("BUTTON", "Привет", WS_CHILD | WS_VISIBLE, 40, 100, 150, 70, hwnd, (HMENU)1, NULL, NULL);
Второй вопрос: Но она(кнопка) какая-то не красивая, на C# совсем другая. Почему ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.02.2015, 22:09
Ответы с готовыми решениями:

Динамическое создание TextBox после нажатия кнопки
как можно сделать так, чтобы после нажатия кнопки появился TextBox, заранее не вставляя его на default.aspx и не пользуясь visible=true...

При нажатии на кнопку,другие кнопки приближаются к данной кнопки
Привет всем!При нажатии на кнопку,другие кнопки приближаются к кнопке на которую я нажимаю.Так как у :active значения width и height меньше...

Нужно написать программу, что бы при нажатии кнопки, появлялись другие кнопки, а та пропадала
То есть, нас перекидало на другую форму, но она должна быть на месте первой, и первая должна закрыться

3
 Аватар для rao
903 / 424 / 159
Регистрация: 02.04.2014
Сообщений: 1,206
28.02.2015, 22:38
Потому что в .exe студия еще добавляет файл-манифест, в котором указываются точные версии используемых библиотек. А у тебя в проекте этой информации вероятно нет. И еще нужно учитывать, то, что C# - это платформа .NET и кнопки там от Windows Forms, а твой код - это WinAPI
0
 Аватар для FreeZon
8 / 10 / 8
Регистрация: 30.12.2013
Сообщений: 577
28.02.2015, 23:00  [ТС]
Цитата Сообщение от rao Посмотреть сообщение
Потому что в .exe студия еще добавляет файл-манифест, в котором указываются точные версии используемых библиотек.
ДА со стилем я разобрался, добавил такую строчку, и все стало нормально:
C++
1
2
3
4
#pragma comment(linker,"/manifestdependency:\"type='win32' \
                        name='Microsoft.Windows.Common-Controls' \
                        version='6.0.0.0' processorArchitecture='*'\
 publicKeyToken='6595b64144ccf1df' language='*'\"")
Но как создавать другие элементы управления, чекбокс, текст бокс и другие, как получать их параметры напирмер Checked у чекбокса textBox.Text и т.д обьясните мне. Или скажите где можно узнать об этом
0
 Аватар для rao
903 / 424 / 159
Регистрация: 02.04.2014
Сообщений: 1,206
28.02.2015, 23:11
"Вас на google забанили?" (с)
В FAQ'е список литературы. В инете море всяких туториалов. Первый попавшийся: про CSliderCtrl (не с начала)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.02.2015, 23:11
Помогаю со студенческими работами здесь

Лист контролов (TextBox)
Как создать лист,(ну или что то подобное листу) контролов? Собственно нужно сделать что-то на подобии обычного виевЛиста или самого...

Бешенные кнопки». Изобразить игровое поле, по которому будут двигаться в произвольном порядке кнопки и другие элементы различного размера. Задача игро
Бешенные кнопки». Изобразить игровое поле, по которому будут двигаться в произвольном порядке кнопки и другие элементы различного размера....

Помогите найти описание контролов (Button,Textbox и.т.п).
Недавно перешел с делфи на си++. Чёто я немогу найти хедер с контролами(Button,Textbox и.т.п).Какой скажите плиз. Code::Blocks.MinGW.

Как выделить текст нескольких контролов (TextBox) одновременно?
Всем привет! На форме массив текстбоксов. Мне нужно при нажатой левой кнопки мыши выделить текст сразу в нескольких текстбоксах. Третий...

Отображение коллекции контролов в зависимости от нажатой кнопки
Есть ряд кнопок и некоторое пространтво под ними (на рисунках ниже все показано). В зависимосте от нажатой кнопки должны отображаться...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru