Можно отрисовать отдельные элементы custom'но, тем самым доведя до желаемого сходства:
VarSetCapacity(PAINTSTRUCT, 64, 0)
OnMessage(0x201, "WndProc"), OnMessage(0x202, "WndProc")
OnMessage(0x205, "WndProc"), OnMessage(0xF, "WM_PAINT")
Gui, Color, E3F1FA
Gui, Font, s6 cBlack, MS Sans Serif
Gui, -Caption +Border HwndGUIhWnd
Gui, Add, Edit, x56 y28 w256 h20 ; Edit1
Gui, Add, Edit, x56 y53 w256 h19 ; Edit2
Gui, Add, Edit, x9 y77 w304 h263 ; Edit3
Gui, Add, Text, x9 y32 w44 h19, To:
Gui, Add, Text, x9 y56 w44 h19, Subject:
Gui, Add, Button, % "gSelectMenu vSend"
. " x11 y349 w143 h21 Center", Send
Gui, Add, Button, % "gSelectMenu vSettings"
. " x169 y349 w143 h21 Center", Settings
Gui, Show, w324 h383, Mail Sender
; PostMessage, 0x112, 0xF020,,, % "ahk_id"GUIhWnd ; work better
; PostMessage, 0x112, 0xF120,,, % "ahk_id"GUIhWnd ; with aero
WinGetPos, WX, WY,,, % "ahk_id"GUIhWnd ; or...
Gui, 2: -Caption +Border HwndGUI2hWnd ;
Gui, 2: Show, % "x"WX " y"WY " w324 h23", Titler ;
PostMessage, 0x112, 0xF060,,, % "ahk_id"GUI2hWnd ;
Return
SelectMenu:
If A_GuiControl
TrayTip,, % "Pressed:`n"(A_GuiControl="Send"
? "Send":"Settings")" button"
Else If % A_ThisMenu="Menu1"
TrayTip,, % "Selected:`n"A_ThisMenuItem
Else
PostMessage, 0x112, A_ThisMenuItem="Minimize"
? 0xF020:0xF060,,, % "ahk_id"GUIhWnd
Return
GuiClose:
ExitApp
WM_PAINT(wParam, lParam, Msg, hWnd)
{
global
If % GUIhWnd!=hWnd
Return
hDC:=DllCall("BeginPaint", "UInt", hWnd, "UInt", &PAINTSTRUCT)
FillRect(&PAINTSTRUCT, 0, 0, 324, 22, 0x00000000) ; 284, 22
; FillRect(&PAINTSTRUCT, 284, 0, 304, 22, 0x00000000)
; FillRect(&PAINTSTRUCT, 304, 0, 324, 22, 0x00000000)
DrawText("Mail Sender", hDC, 5, 3, 284, 22, SetFont(), 0x00FFFFFF)
DrawText("+", hDC, 290, 2, 312, 22
, SetFont(-13, 900,,,, 5, "Impact"), 0x00FFFFFF)
DrawText("Х", hDC, 309, 3, 332, 22
, SetFont(-13, 900,,,,, "Poplar Std"), 0x00FFFFFF)
DllCall("EndPaint", "UInt", hWnd, "UInt", PAINTSTRUCT)
}
FillRect(P, X, Y, T, B, C)
{
VarSetCapacity(RECT, 16, 0), H:=NumGet(p+0)
NumPut(X, RECT, 0), NumPut(Y, RECT, 4)
NumPut(T, RECT, 8), NumPut(B, RECT, 12)
OldDC:=DllCall("SelectObject", "UInt", H
, "UInt", DllCall("GetStockObject", "UInt", 18))
NumPut(NumGet(RECT, 0), P+0, 8), NumPut(NumGet(RECT, 4), P+0, 12)
NumPut(NumGet(RECT, 8), P+0, 16), NumPut(NumGet(RECT, 12), P+0, 20)
DllCall("SetDCBrushColor", "UInt", H, "UInt", C)
DllCall("FillRect", "UInt", H, "UInt", &RECT, "Int", 0)
DllCall("SelectObject", "UInt", H
, "Int", OldDC)
}
DrawText(Str, H, X, Y, T, B, F, C)
{
VarSetCapacity(RECT, 16, 0)
NumPut(X, RECT, 0), NumPut(Y, RECT, 4)
NumPut(T, RECT, 8), NumPut(B, RECT, 12)
OldDC:=DllCall("SelectObject", "UInt", H, "UInt", F)
DllCall("SetBkMode", "UInt", H, "UInt", 1) ; TRANSPARENT
DllCall("SetTextColor", "UInt", H, "UInt", C)
DllCall("DrawText", "UInt", H
, "Str", Str
, "UInt", StrLen(Str)
, "UInt", &RECT
, "UInt", 0x10) ; DT_WORDBREAK
DllCall("SelectObject", "UInt", H
, "Int", OldDC)
}
SetFont(H=-11, W=400, I=0, U=0, S=0, Q=0, F="MS Sans Serif")
{
Return, DllCall("CreateFont", "Int", H
, "UInt", 0
, "UInt", 0
, "UInt", 0
, "UInt", W ; FW_NORMAL
, "UInt", I
, "UInt", U
, "UInt", S
, "UInt", 1 ; DEFAULT_CHARSET
, "UInt", 0 ; OUT_DEFAULT_PRECIS
, "UInt", 0 ; CLIP_DEFAULT_PRECIS
, "UInt", Q ; DEFAULT_QUALITY
, "UInt", 0|0<<4 ; DEFAULT_PITCH|FF_DONTCARE
, "Str", F)
}
WndProc(wParam, lParam, Msg, hWnd)
{
global
MouseGetPos, X, Y, hWnd
If Not ((X>=1 And Y>=23) And (X<=324 And Y<=383))
{
If % Msg=0x201 And ((X>=1 And Y>=1) And (X<=284 And Y<=22))
PostMessage, 0xA1, 2,,, % "ahk_id"GUIhWnd
If Msg=0x202
{
If ((X>=284 And Y>=1) And (X<=304 And Y<=22))
PostMessage, 0x112, 0xF020,,, % "ahk_id"GUIhWnd
If ((X>=304 And Y>=1) And (X<=324 And Y<=22))
PostMessage, 0x112, 0xF060,,, % "ahk_id"GUIhWnd
}
If % Msg=0x205 And ((X>=1 And Y>=1) And (X<=304 And Y<=22))
{
Menu, Menu2, Add, Minimize, SelectMenu
Menu, Menu2, Add, Close, SelectMenu
Menu, Menu2, Show
}
}
Else
If Msg=0x205
If Not (((X>=59 And Y>=31) And (X<=310 And Y<=46))
Or ((X>=59 And Y>=56) And (X<=310 And Y<=70))
Or ((X>=12 And Y>=80) And (X<=311 And Y<=338)))
{
Menu, Menu1, Add, Item1, SelectMenu
Menu, Menu1, Add, Item2, SelectMenu
Menu, Menu1, Show
}
}