Orion9

|
Posted: Mon Oct 20, 2025 00:12 Post subject: |
|
|
| A55555 wrote: | | Да, я сейчас спокойно пользуюсь 32-битной версией, разницы пока не встречал, всё нормально. |
В wiki есть статья, которая хорошо описывает разницу между ТСх64 и ТСх32, на случай если будет интересно:
https://tckb.ru/wiki/total_commander_x64/
Очень хорошая статья. Всё просто по полочкам.
Loopback
Вопрос немного внезапный: а почему идентификаторы пунктов меню не перехватываются в WM_SYSCOMMAND? Сами пункты нормально создаются и отображаюся, но вот с их обработкой ничего не получается:
| Code: | hMenu = DllCall("GetSystemMenu", "handle", AUTORUN_TCHANDLE, "bool", 0, "handle")
If hMenu > 0 Then
DllCall("AppendMenuW", "handle", hMenu, "uint", 2048, "uint_ptr", 0, "ptr", 0)
DllCall("AppendMenuW", "handle", hMenu, "uint", 0, "uint_ptr", 1000, "wstr", "About")
DllCall("AppendMenuW", "handle", hMenu, "uint", 1, "uint_ptr", 1001, "wstr", "Settings...")
EndIf
# WM_SYSCOMMAND
SetMessageAction /P /DM 0x0112 "SysMenuCallback"
Func SysMenuCallback(hWnd, uMsg, wParam, lParam)
OutputDebugString(wParam)
If wParam = 1000 Then
MsgBox("About")
ElseIf wParam = 1001 Then
MsgBox("Settings")
EndIf
EndFunc |
Можно накидать интересных пунктов меню, включая логотип, который прикольно кстати смотрится:
| Code: | hBitFile = DllCall("LoadImageW", "handle", 0, _
"wstr", "d:\Temp\Images\logo.bmp", _
"uint", 0, "int", 0, "int", 0, _
"uint", 0x00000010, "handle")
hMenu = DllCall("GetSystemMenu", "handle", AUTORUN_TCHANDLE, "bool", 0, "handle")
If hMenu > 0 Then
DllCall("AppendMenuW", "handle", hMenu, "uint", 2048, "uint_ptr", 0, "ptr", 0)
DllCall("AppendMenuW", "handle", hMenu, "uint", 0, "uint_ptr", 1000, "wstr", "About")
DllCall("AppendMenuW", "handle", hMenu, "uint", 4, "uint_ptr", 1001, "ptr", hBitFile)
DllCall("AppendMenuW", "handle", hMenu, "uint", 1, "uint_ptr", 1002, "wstr", "Settings...")
EndIf |
|
|