Вопрос № 61506: Здравствуйте эксперты!!!!
1.Я только начал изучать ассемблер и хотел бы узнать каким образом можно на основной форме создать Label как в Delhi.
2. Можно ли использовать например тот же Label из файла ресурсов в основной форме(не в DialogBox)...
Вопрос № 61.506
Здравствуйте эксперты!!!!
1.Я только начал изучать ассемблер и хотел бы узнать каким образом можно на основной форме создать Label как в Delhi.
2. Можно ли использовать например тот же Label из файла ресурсов в основной форме(не в DialogBox)
3. Каким образом можно изменить цвет DialogBox'а
Отвечает: Волков Павел Юрьевич
Здравствуйте, Sergei__2006!
1.
Если Вы программируете в IDE
(RadASM http://www.radasm.com/,
WinAsm http://www.winasm.net/
, полный список - http://wasm.ru/toollist.php?list=7)
то там есть средства визуализации или можно создать в отдельном редакторе (например ResEd http://www.radasm.com/projects/ResEd.zip) скомпилировать и присоединить во время линковки.
2.
Конечно можно, ведь Label - это просто строка, посмотрите функцию LoadString, она копирует строку из ресурсов в отдельный буфер.
3.
Попробуйте обрабатывать сообщение WM_CTLCOLORDLG, при приходе этого сообщения, wParam - Handle to the device context for the dialog box (индентификатор контекста устройства вывода)
, lParam - Handle to the dialog box (индентификатор диалогового окна).
При обработке этого сообщения надо вернуть индентификатор кисти, которой будет закрашено диалоговое окно. Необходимо предусмотреть удаление индентификатора кисти.
пример:
DlgProc hWnd, msg, wParam, lParam
mov eax,[msg]
cmp eax,WM_CTLCOLORDLG
je ctlcolordlg
..
cmp eax,WM_CLOSE
je close
..
ctlcolordlg:
INVOKE CreateSolidBrush, 0000ff00h
mov [hBrush], eax
ret
close:
INVOKE DeleteObject, [hBrush]
INVOKE EndDialog, [hdlg], [wParam]
mov eax, 1
ret
синтаксис FASMа, преобразовать к другому - не проблема. Цвет в формате RGB - 0000ff00h.
Пример использования можно увидеть в пакете MASM32v8(или 9) - examplesEXAMPLE7TREEDEMO, изменяют цвет SplitBar'a при перемещении.
Успехов.
--------- Век живи, век учись.
Ответ отправил: Волков Павел Юрьевич (статус: 9-ый класс)
Ответ отправлен: 07.11.2006, 07:51 Оценка за ответ: 5