Форум программистов, компьютерный форум, киберфорум
Assembler: Windows/protected mode
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
 Аватар для semiono
161 / 18 / 0
Регистрация: 14.09.2010
Сообщений: 472
Записей в блоге: 6

Slider Control - ресурсы

01.04.2024, 23:44. Показов 1176. Ответов 9

Студворк — интернет-сервис помощи студентам
Ищу какой нибудь ресурс чтобы крутить можно было, самый простой.

Win32/ Классические технологии/ Звук и видео Основные ИНТЕРФЕЙСы/ API аудио/ Пиковые метры


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Peakmeter.rc -- Resource script
 
#include "resource.h"
#include "windows.h"
 
//
// Dialog
//
PEAKMETER DIALOGEX 0, 0, 150, 34
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | DS_SETFONT
CAPTION "Peak Meter"
FONT 8, "Arial Rounded MT Bold", 400, 0, 0x0
BEGIN
    CTEXT      "",IDC_PEAK_METER,34,14,82,5
    LTEXT      "Min",IDC_STATIC_MINVOL,10,12,20,12
    RTEXT      "Max",IDC_STATIC_MAXVOL,120,12,20,12
END
Интересно это будет на Fasm работать) А доступ к таким вещам через процедуру окна как обычно?
Хотел поставить Visual Studio, ни один не стал на мою win8.1 в которой .NET убит. Но это так, к слову.
Что-то на ассемблере совсем не встречаются никакие слайдеры, кнобы. numeric up down control, spin control итд.

Скампилил на AutoIt3, а там ресурс не видно) а слайдер есть)

Не то чтобы я хочу Cubase написать! Просто поиграться, как жаль что этого нет в окне, очень неплохо бы было) даже для калькулятора
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.04.2024, 23:44
Ответы с готовыми решениями:

Slider control и edit control
Здравствуйте как мне получать значения с slider control и как на основе полученных значений устанавливать в edit control текст Вот такой...

Slider Control
Как для элемента управления Slider Control установить число штришков-меток? Когда устанавливаю Tick Marks в True, появляется только...

slider and key control
Добрый! Необходимо осуществить прокрутку слайдера клавиатурными стрелками. Пробовал $("#slider").slider(sliderOpts); ...

9
 Аватар для semiono
161 / 18 / 0
Регистрация: 14.09.2010
Сообщений: 472
Записей в блоге: 6
02.04.2024, 00:05  [ТС]
ex16button3.zip а DIALOGEX я всё же нашёл, что странно ни одного слайдера, одни кнопки и эдит
0
 Аватар для semiono
161 / 18 / 0
Регистрация: 14.09.2010
Сообщений: 472
Записей в блоге: 6
02.04.2024, 00:18  [ТС]
Code
1
2
3
        IDC_STATIC_MINVOL =     1001
        IDC_STATIC_MAXVOL  =    1002
        IDC_PEAK_METER      =   1003
как его описать BEGIN .. END
0
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6213 / 2447 / 403
Регистрация: 29.07.2014
Сообщений: 3,178
Записей в блоге: 4
02.04.2024, 07:37
Цитата Сообщение от semiono Посмотреть сообщение
Интересно это будет на Fasm работать
а почему нет?
В фасме прописаны только стандартные элементы управления, но в природе есть ещё куча доп.элементов, которые живут в либе comctl32.dll (контролы). Функция InitCommonControls() подключает их в твоё приложение, а конкретный элемент из списка ниже потом выбираешь как обычно в поле "dialogitem" секции-ресурсов. В качестве регулятора громкости можно заюзать элемент "TrackBar", или на худой конец "UpDown". У меня в инклуде фасма "equates\comctl32.inc" есть такой список доп.элементов:

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
; Common control window classes
;-------------------------------------------------------------------
ANIMATE_CLASS       equ  'SysAnimate32'        ; гифки
DATETIMEPICK_CLASS  equ  'SysDateTimePick32'   ; часы
HEADER_CLASS        equ  'SysHeader32'         ; заголовок чего либо
HOTKEY_CLASS        equ  'msctls_hotkey32'     ; горячая клавиша
LISTVIEW_CLASS      equ  'SysListView32'       ; список-таблица
MONTHCAL_CLASS      equ  'SysMonthCal32'       ; календарь
PROGRESS_CLASS      equ  'msctls_progress32'   ; прогресс-бар
REBAR_CLASS         equ  'ReBarWindow32'       ; верт/гориз полоса-разделитель 
STATUS_CLASS        equ  'msctls_statusbar32'  ; строка статуса внизу окна
TABCONTROL_CLASS    equ  'SysTabControl32'     ; вкладки 
TOOLBAR_CLASS       equ  'ToolbarWindow32'     ; панель инструментов в меню
TOOLTIPS_CLASS      equ  'tooltips_class32'    ; всплывающее окно-подсказка
TRACKBAR_CLASS      equ  'msctls_trackbar32'   ; шкала с ползунком (твой вариант)
TREEVIEW_CLASS      equ  'SysTreeView32'       ; древо выбора с подпунктами
UPDOWN_CLASS        equ  'msctls_updown32'     ; поле счётчика со-стрелками вверх/вниз
Пример
Assembler
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
format   pe gui
entry    start
include 'win32ax.inc'
;--------------
.data
ID_TRACK  =   666
hTrack    dd  0
buff      db  0
;--------------
.code
start:    invoke  InitCommonControls
          invoke  DialogBoxParam, 0, 100, 0, DialogProc, 0
          invoke  ExitProcess, 0
 
proc  DialogProc hwnddlg, msg, wparam, lparam
 
          cmp     [msg],WM_COMMAND
          je      @exit
          cmp     [msg],WM_CLOSE
          je      @close
          cmp     [msg],WM_INITDIALOG
          jne     @next
 
; WM_INITDIALOG
@init:
; Получить дескриптор контрола
          invoke  GetDlgItem,[hwnddlg],ID_TRACK    ;// ListView
          mov     [hTrack],eax
          jmp     @next
 
; WM_CLOSE/COMMAND"
@exit:    cmp     [wparam],BN_CLICKED shl 16 + IDCANCEL
          jne     @next
@close:   invoke  EndDialog,[hwnddlg], 0
@next:    xor     eax,eax
          ret
endp
;-------------
section '.idata' import data readable writeable
library  kernel32,'kernel32.DLL',user32,'user32.DLL',comctl32,'comctl32.dll'
include  'api\kernel32.inc'
include  'api\user32.inc'
include  'api\comctl32.inc'
;-------------
section '.rsrc' data resource readable
directory  RT_DIALOG, dialogs
resource   dialogs, 100, LANG_ENGLISH + SUBLANG_DEFAULT, mainform
 
dialog mainform,' TrackBar ',150,100,150,35, DS_3DLOOK++DS_SYSMODAL+WS_CAPTION+WS_SYSMENU,,,'Verdana',8
  dialogitem TRACKBAR_CLASS,'',ID_TRACK, 010,010,120,15,WS_VISIBLE+WS_BORDER
enddialog


Название: tb.png
Просмотров: 106

Размер: 3.6 Кб

TrackBar: https://learn.microsoft.com/en... -reference
UpDown: https://learn.microsoft.com/en... -reference
3
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6213 / 2447 / 403
Регистрация: 29.07.2014
Сообщений: 3,178
Записей в блоге: 4
02.04.2024, 08:19
Кстати если версия "comctl32.dll" v6 и выше, то в неё добавили разные плюшки, на что делается акцент в доках мягких. Обычно во-всех либах должна быть функция GetVersion(), чтобы юзер мог узнать её возможности. Если функция не экспортируется явно, то запрашиваем её динамически через GetProcAddress(). Но в данном случае в comctl32 есть такой экспорт, т.ч. вытащить версию можно так (вызов заполняет структуру "DLLVERSIONINFO"):

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
format  pe console
include 'win32ax.inc'
entry   start
;//----------
.data
dvi     DLLVERSIONINFO
;//----------
.code
start:  invoke DllGetVersion,dvi
       cinvoke printf,<10,' comctl32.dll  v%d.%d.%d.%d',0>,\
                            [dvi.dwMajorVersion],[dvi.dwMinorVersion],\
                            [dvi.dwBuildNumber], [dvi.dwPlatformID]
       cinvoke  _getch
       cinvoke  exit,0
;//----------
section '.idata' import data readable
library  msvcrt, 'msvcrt.dll',comctl32,'comctl32.dll'
include 'api\msvcrt.inc'
include 'api\comctl32.inc'


У меня Win7 и видно, что dll.v5,
а в версию 6+ вшиты различного рода украшательства, типа тень, округлые края, и многое другое.
3
 Аватар для semiono
161 / 18 / 0
Регистрация: 14.09.2010
Сообщений: 472
Записей в блоге: 6
02.04.2024, 16:24  [ТС]
а в версию 6+ вшиты различного рода украшательства, типа тень, округлые края, и многое другое.
О, это вообще хорошо!
0
 Аватар для semiono
161 / 18 / 0
Регистрация: 14.09.2010
Сообщений: 472
Записей в блоге: 6
09.04.2024, 19:49  [ТС]
Что-то не могу обработчик написать. Вот у меня к примеру есть байт с диапазоном 0 - 7Fh, и надо его крутить.
На старте пусть 40h. Вообще, кроме этого диапазона практически ничего не надо)
Хотя два байта тоже бывает иногда, да фиг с ним
0
 Аватар для semiono
161 / 18 / 0
Регистрация: 14.09.2010
Сообщений: 472
Записей в блоге: 6
17.04.2024, 00:47  [ТС]
Code
1
2
3
4
5
    invoke SendMessage,[hTrack],TBM_SETRANGE,1,0x007F_0000
    invoke SendMessage,[hTrack],TBM_GETPOS,NULL,NULL
 
    invoke wsprintf,zzzz,'%d',eax
    invoke MessageBoxTimeout,HWND_DESKTOP,zzzz,'',MB_TOPMOST,LANG_NEUTRAL,5000
А что так нельзя что ли) почему нет ничего?
0
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6213 / 2447 / 403
Регистрация: 29.07.2014
Сообщений: 3,178
Записей в блоге: 4
17.04.2024, 05:29
semiono, вот почитай на досуге: https://studfile.net/preview/3988475/page:5/

Трекбар используется, если от пользователя требуется получить дискретное значение из определенного диапазона.
Маркер пермещается на заданное программой значение. Бывают горизонтальные (TBS_HORZ), или вертикальные (TBS_VERT).

Диапазон значений ползунка задается сообщением:
Assembler
1
2
   TBM_SETRANGE:  wp=fRedraw       ; bool перерисовать маркер после изменения диапазона 
                  lp=lMin/Max      ; диапазон: мл.слово = мин, ст.слово = макс
Переместить ползунок можно сообщением:
Assembler
1
2
   TBM_SETPOS  :  wp=TRUE          ; bool
                  lp=Position      ; новая позиция ползунка
Получить текущее значение ползунка:
Assembler
1
   TBM_GETPOS  :  wp=0; lp=0.
Трекбар оповещает родительское окно о событиях через сообщение:
Assembler
1
2
3
   WM_HSCROLL  :  wp=ScrollCode    ; мл.слово = код события 
                  wp=Posistion     ; ст.слово = позиция маркера ползунка 
                  lp=hTrackBar     ; дескриптор элемента
2
 Аватар для semiono
161 / 18 / 0
Регистрация: 14.09.2010
Сообщений: 472
Записей в блоге: 6
17.04.2024, 23:53  [ТС]
А, я понял! Что-то понял)

Code
1
2
proc DialogProc hwnddlg,msg,wparam,lparam
; сохранили регистры..
тут шаги всегда... и мы тут вставляемся

Code
1
2
3
        cmp [msg],WM_HSCROLL
        jne @f
        je scrl
далее подпрограма типа макрос с возвратом ret

Code
1
2
3
4
5
6
7
scrl:
 
        invoke SendMessage,[hTrack],TBM_GETPOS,NULL,NULL
        invoke wsprintf,z,'%d',eax
        invoke MessageBoxTimeout,HWND_DESKTOP,z,'',MB_TOPMOST,LANG_NEUTRAL,5000
        xor eax,eax
        ret
готово! вобщем подпрограму можно в любом порядке вставить и через ret вернуться к верхним шагам!
понял примерно) Но почему у меня MsgBox цыфры никогда не показывает)
или там побайтам какое-то шаманство мл. слово, ст. слово. сдвиг что ли shr нужен))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.04.2024, 23:53
Помогаю со студенческими работами здесь

Brightness control slider qml
Скажите пожалуйста, если кто знает. как написать приложение qt quick под ubuntu для регулировки яркости экрана приложения с помощью...

[MFC] Изменение ширины и высоты кнопки с помощью элементов Slider Control
Разработать приложение, в котором с мопощью элементов Slider Control пользователь может изменять ширину и высоту кнопки.

[MFC] Задание трех составляющих цвета с помощью трех регуляторов Slider Control
Разработать приложение, в котором с помощью трех регуляторов Slider Control задаются три составляющие цвета – красная, зеленая и синяя....

Какая разница между Web server control, Composite control и User Control
Подскажите, пожалуйста, какая разница между Web server control, Composite control и User Control, а то я ща тут наделаю делов)

Revolution Slider Error: Slider with alias main_slider not found
Уважаемые форумчане помогите пожалуйста! Поставил плагин Revolution Slider но он выводит ошибку на экране Revolution Slider Error:...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через 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-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru