Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
)))
 Аватар для aleks_pilipenko
610 / 423 / 55
Регистрация: 31.12.2009
Сообщений: 2,334
Записей в блоге: 3

Стиль для ToolBar. Чтобы его можно было передвигать по форме

28.07.2017, 12:42. Показов 953. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Во многих программах панели инструментов можно передвигать мышкой. Не могу найти, как это сделать...

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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
// Hello1.cpp
#include <windows.h>
#include <commctrl.h>
 
#pragma comment (lib, "comctl32.lib")
 
HWND hMainWnd;  
HWND hWndToolBar;
 
#define ID_TOOLBAR         201
#define IDC_TB_COMBOBOX    202
#define NUM_BUTTONS         15
#define SEPARATOR_WIDTH     10
#define COMBO_SPACE_WIDTH   50
#define COMBO_SPACE_HEIGHT 100
#define ID_SEP             10000
#define IDR_XY             102
 
 
#define ID_CUT                 0
#define ID_COPY                1
#define ID_PASTE               2
#define ID_UNDO                3
#define ID_REDOW               4
#define ID_DELETE              5
#define ID_FILE_NEW             6
#define ID_FILE_OPEN            7
#define ID_FILE_SAVE            8
#define ID_PRINT_PRE            9
#define ID_PROPERTIES          10
#define ID_HELP                11
#define ID_FIND                12
#define ID_REPLACE             13
#define ID_PRINT               14
TBBUTTON tbb[] = {
    {STD_CUT, ID_CUT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, 0},
    {STD_COPY, ID_COPY, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, 0},
    {STD_PASTE, ID_PASTE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, 0},
    {STD_UNDO, ID_UNDO, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, 0},
    {STD_REDOW, ID_REDOW, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, 0},
    {STD_DELETE, ID_DELETE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, 0},
    {STD_FILENEW, ID_FILE_NEW, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, 0},
    {STD_FILEOPEN, ID_FILE_OPEN, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, 0},
    {STD_FILESAVE, ID_FILE_SAVE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, 0},
    {STD_PRINTPRE, ID_PRINT_PRE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, 0},
    {STD_PROPERTIES, ID_PROPERTIES, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, 0},
    {STD_HELP, ID_HELP, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, 0},
    {STD_FIND, ID_FIND, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, 0},
    {STD_REPLACE, ID_REPLACE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, 0},
    {STD_PRINT, ID_PRINT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, 0},
    };
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
///////////////////////////////////////////////////////////////////////////////////////////////
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, int nCmdShow)
{
    char szClassName[] = "MyClass";
    MSG msg;
    WNDCLASSEX wc;
    wc.cbSize        = sizeof(wc);  
    wc.style         = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc   = WndProc;
    wc.cbClsExtra    = 0;
    wc.cbWndExtra    = 0;
    wc.hInstance     = hInstance;
    wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wc.lpszMenuName  = NULL;
    wc.lpszClassName = szClassName;
    wc.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);
 
    // Регистрируем класс окна
    if (!RegisterClassEx(&wc)) {
        MessageBox(NULL, "Cannot register class", "Error", MB_OK);
        return 0;
    }
    
    // Создаем основное окно приложения
    hMainWnd = CreateWindow( 
        szClassName, "Application", WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,
        (HWND)NULL, (HMENU)NULL,
        (HINSTANCE)hInstance, NULL
    );
    
    if (!hMainWnd) {
        MessageBox(NULL, "Cannot create main window", "Error", MB_OK);
        return 0;
    }
 
    // Показываем наше окно
    ShowWindow(hMainWnd, nCmdShow); 
 
    while (GetMessage(&msg, NULL, 0, 0))  {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
 
    return msg.wParam;
}
 
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch (msg)
    {
        case WM_CREATE:
            hWndToolBar = CreateToolbarEx(hWnd, WS_CHILD | WS_VISIBLE | TBSTYLE_WRAPABLE,
        1, 0, HINST_COMMCTRL, IDB_STD_SMALL_COLOR, tbb, 15, 0, 0, 0, 0, sizeof(TBBUTTON));
        SendMessage(hWndToolBar, CCS_TOP, 0, 0);
 
        break;
    case WM_CLOSE:
        DestroyWindow(hWnd);
        return 0;
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    default:
        return DefWindowProc(hWnd, msg, wParam, lParam);
    }
    return 0;
}
Добавлено через 1 час 39 минут
Если создать проект MFC, то ToolBar уже обладает этим свойством...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.07.2017, 12:42
Ответы с готовыми решениями:

Можно ли сделать так, чтобы Panel можно было бы передвигать по форме мышкой?
Можно ли сделать так, чтобы Panel можно было бы передвигать по форме мышкой?

Как сделать, чтобы можно было передвигать камеру?
Не знал как назвать тему но суть такая Есть допустим поле для игры и на нем объекты, &quot;камера&quot; захватывает небольшой участок...

Добавление формы в форму, чтобы её можно было передвигать, как в Paint.net
Я уже видел код, как это делается, к сожалению не помню.. Там какое-то свойство во второй форме менять надо и она спокойно добавляется..

3
415 / 150 / 48
Регистрация: 02.06.2016
Сообщений: 364
28.07.2017, 14:32
Цитата Сообщение от aleks_pilipenko Посмотреть сообщение
Если создать проект MFC, то ToolBar уже обладает этим свойством...
Spy++
Просмотр свойств для выбранных окон, потоков, процессов или сообщений.
1
)))
 Аватар для aleks_pilipenko
610 / 423 / 55
Регистрация: 31.12.2009
Сообщений: 2,334
Записей в блоге: 3
29.07.2017, 11:04  [ТС]
GoshaM, посмотрел стили, скопировал, но не добился, чего хотел... Видимо это все по-другому нужно реализовывать...
0
415 / 150 / 48
Регистрация: 02.06.2016
Сообщений: 364
29.07.2017, 21:01
ToolBar на Rebar надо поместить.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.07.2017, 21:01
Помогаю со студенческими работами здесь

Как создать 3d модель, и соединить её с кодом с++, чтобы можно было например передвигать ее по плоскости?
Как создать 3d модель, и соединить её с кодом с++, чтобы можно было например передвигать ее по плоскости? Какие программы для этого нужны,...

Сократить для одной из букв длину кодового слова так, чтобы код можно было декодировать его однозначно
Для кодирования некоторой последовательности, состоящей из букв А, Б, В, Г и Д, используетя неравномерный двоичный код, позволяющий...

Как сделать так, чтобы можно было выводить текст в форме
1. Как сделать так, чтобы можно было выводить текст в форме ? Например, как в калькуляторе - ты нажал button и оно вывело цифру, которая...

Как сделать чтобы контролы типа Button можно было перетаскивать по форме?
Пока только начинаю разбираться в Delphi перерыл кучу примеров и уроков но не смог найти подходящих.. Нужно чтобы при зажатой левой...

Как объявить глобальную переменную чтобы ее можно было применять на любой форме?
Привет народ ! подскажите пожалуйста как мне объявить глобальную переменную в C# чтобы я ее мог применять на любой форме. public...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru