MsgBox % ColorMsgBox("展示一下自定义确认框,是否关闭窗口?")
ExitApp
/*
Text:显示提示字段
splitLine:是否显示分割线
BackColor:背景色
TextColor:提示字段字体颜色
ButtonBGColor:按钮背景色
ButtonTextColor:按钮字体色
MaxWidth:窗口宽度
*/
ColorMsgBox(Text,splitLine=0,BackColor:=0x333333,TextColor:=0xf0f0f0,ButtonBGColor:=0xf0f0f0,ButtonTextColor:=0xe81010,MaxWidth=300){
Static picbc,pic1,pic2,pic3,tip,GuiControl_yes,GuiControl_no
if (Text="")
Return
HWND:= WinActive("A")
NumPut(VarSetCapacity(info, A_IsUnicode ? 504 : 344, 0), info, 0, "UInt")
DllCall("SystemParametersInfo", "UInt", 0x29, "UInt", 0, "Ptr", &info, "UInt", 0)
FontName:= StrGet(&info + 52)?StrGet(&info + 52):"宋体"
Gui,MSG:Destroy
MaxWidth:=MaxWidth>250?MaxWidth:300,PicHeight:=100
Owner:=A_Gui<>""?" Owner" A_Gui:" AlwaysOnTop "
Gui,MSG:-Caption %Owner% +HWNDMsgBOX -DPIScale
Gui,MSG:Add,Pic,x0 y0 w%MaxWidth% h%PicHeight% vpicbc AltSubmit,% "HBITMAP:" . CreateColoredBitmap(MaxWidth, PicHeight,BackColor)
Gui,MSG:Font,% "c" RegExReplace(Format("0x{:x}",TextColor),"i)0x") " s10",% FontName
Gui,MSG:Add,Text,% "x20 y20 w" MaxWidth-40 " BackgroundTrans vtip",%Text%
if splitLine
Gui,MSG:Add,Text,% "xm-2 y+10 w" MaxWidth-20 " 0x10"
GuiControlGet,tippos,MSG:Pos,tip
GuiControl,MSG:Move, picbc,% "h" (PicHeight:=splitLine?tipposH+130:tipposH+110)
GuiControl,MSG:, picbc,% "HBITMAP:" CreateColoredBitmap(MaxWidth, PicHeight, BackColor)
Gui,MSG:Add,Pic,% "x" (MaxWidth-230-5)/2 " y" PicHeight-65 " w100 h40 Border AltSubmit vpic2",% "HBITMAP:" . CreateColoredBitmap(100, 50,ButtonBGColor)
GuiControlGet,pic2pos,MSG:Pos,pic2
Gui,MSG:Add,Pic,% "x+30 yp w100 h40 Border AltSubmit vpic3",% "HBITMAP:" . CreateColoredBitmap(100, 50,ButtonBGColor)
GuiControlGet,pic3pos,MSG:Pos,pic3
Gui,MSG:Font,% "c" RegExReplace(Format("0x{:x}",ButtonTextColor),"i)0x") " s11 bold",% FontName
Gui,MSG:Add,Text,% "x" pic2posX+1 " y" pic2posY-1 " w100 Center gGuiControl_yes vGuiControl_yes",是(Yes)
Gui,MSG:Add,Text,% "x" pic3posX+1 " yp w100 Center gGuiControl_no vGuiControl_no",否(No)
GuiControlGet,yespos,MSG:Pos,GuiControl_yes
GuiControl,MSG:Move, GuiControl_yes,% "y" yesposY+(40-yesposH)/2
GuiControl,MSG:Move, GuiControl_no,% "y" yesposY+(40-yesposH)/2
if splitLine
Gui,MSG:Add,GroupBox,% "x10 y0 w" MaxWidth-20 " h" PicHeight-10
Gui,MSG:Show,% "NA w" MaxWidth " h" PicHeight,
OnMessage(0x201, "WM_LBUTTONDOWN")
while !(ButtonCancel||ButtonOK){
if (!WinExist("ahk_id " HWND)&&HWND){
Gui, MSG:Destroy
return False
}Else{
continue
}
}
if (ButtonCancel) {
return False
}
Gui, MSG: Submit, NoHide
Gui, MSG:Destroy
return ButtonOK
pic2:
GuiControl_yes:
ButtonOK:= true
Return
pic3:
GuiControl_no:
ButtonCancel:= true
Gui, MSG:Destroy
Return
}
WM_LBUTTONDOWN(wParam, lParam, uMsg, hWnd){
PostMessage, 0xA1, 2
}
CreateColoredBitmap(width, height, color) {
hBitmap := CreateDIBSections(width, -height,, pBits)
Loop % height {
i := A_Index - 1
Loop % width
NumPut(color, pBits + width*4*i + (A_Index - 1)*4, "UInt")
}
Return hBitmap
}
CreateDIBSections(w, h, bpp := 32, ByRef ppvBits := 0)
{
hdc := DllCall("GetDC", "Ptr", 0, "Ptr")
VarSetCapacity(bi, 40, 0)
NumPut( 40, bi, 0, "UInt")
NumPut( w, bi, 4, "UInt")
NumPut( h, bi, 8, "UInt")
NumPut( 1, bi, 12, "UShort")
NumPut( 0, bi, 16, "UInt")
NumPut(bpp, bi, 14, "UShort")
hbm := DllCall("CreateDIBSection", "Ptr", hdc, "Ptr", &bi, "UInt", 0, "PtrP", ppvBits, "Ptr", 0, "UInt", 0, "Ptr")
DllCall("ReleaseDC", "Ptr", 0, "Ptr", hdc)
return hbm
}
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。