1 (изменено: Phoenixxx_Czar, 2021-12-07 17:26:22)

Тема: AHK: Не работает GUI без рамки и перемещение

Есть данный код:

gui, main:-Border -SysMenu
gui, main:Margin, 10, 10
gui, main:Color, 090909, 252525

gui, main:Font, s9 Bold c909090, Consolas

gui, main:add, edit, x5 y10 h15 +number -E0x200 gonEdit vedit
gui, main:add, text, x8 y+5 w100 vresult

gui, main:Show

OnMessage(0x201, "WM_LBUTTONDOWN")
return

onEdit()
{
	GuiControlGet, edit, main:, edit
	GuiControl, main:, result, % calcBlock2Stack(edit)
}

calcBlock2Stack(count)
{
	stack := count // 64
	rest := mod(count, 64)

	return (rest ? rest (stack ? " + " : "") : "") (stack ? "(64 x " stack ")" : "")
}

По сути, окно должно было появится без рамки и должна быть возможность перемещения, но это не работает. Почему?

Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

2

Re: AHK: Не работает GUI без рамки и перемещение

Это очевидно — отсутствует функция WM_LBUTTONDOWN().

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Не работает GUI без рамки и перемещение

Хорошо, я и в правду думал на данный участок, но почему-то в древнем скрипте ее не было и все работало как нужно.
Все работает, после добавления:

WM_LBUTTONDOWN()
{
	PostMessage, 0xA1, 2,,, A
}

Остается вопрос насчет рамки окна.

Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

4

Re: AHK: Не работает GUI без рамки и перемещение

Смотря, что называть рамкой. Можно вместо -Border -SysMenu использовать -Caption.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: Не работает GUI без рамки и перемещение

Кхм, да, это то, что нужно. Спасибо.
Может кому-то пригодится (хотя такого полно будет).

gui, main:-Caption
gui, main:Margin, 10, 10
gui, main:Color, 090909, 252525

gui, main:Font, s9 Bold c909090, Consolas

gui, main:add, edit, x5 y10 h15 +number -E0x200 gonEdit vedit
gui, main:add, text, x8 y+5 w100 vresult

gui, main:Show ;, x1920 y735

OnMessage(0x201, "WM_LBUTTONDOWN")
return

WM_LBUTTONDOWN()
{
	PostMessage, 0xA1, 2,,, A
}

onEdit()
{
	GuiControlGet, edit, main:, edit
	GuiControl, main:, result, % calcBlock2Stack(edit)
}

calcBlock2Stack(count)
{
	stack := count // 64
	rest := mod(count, 64)

	return (rest ? rest (stack ? " + " : "") : "") (stack ? "(64 x " stack ")" : "")
}
Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

6

Re: AHK: Не работает GUI без рамки и перемещение

В функции

WM_LBUTTONDOWN()
{
	PostMessage, 0xA1, 2,,, A
}

эта часть ,,, A лишняя, действие применяется к окну, из которого пришло сообщение.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder