ViSiToR
Silver Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору AutoIT 16:46 10-11-2009 Цитата: как мне оставить окно в этой-же красивой рамке, но избавится от возможности изменять размер окна | Afaik, только так: Код: #include <GuiConstantsEx.au3> #include <WindowsConstants.au3> #include <WinAPI.au3> ; Global $Clicked = 0, $DoubleClicked = 0 Global $GUI = GUICreate("Resize Borders without resizing - Example", 400, 330, -1, -1, _ BitOR($GUI_SS_DEFAULT_GUI, $WS_THICKFRAME), $WS_EX_CLIENTEDGE) $BackPicID = GUICtrlCreatePic(@WindowsDir & "\Web\Wallpaper\Windows XP.jpg", 0, 0, 400, 330, -1, $GUI_WS_EX_PARENTDRAG) GUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST") GUIRegisterMsg($WM_COMMAND, "WM_COMMAND") GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit EndSwitch If $DoubleClicked Then $DoubleClicked = 0 MsgBox(64, "Title", "DoubleClicked") EndIf WEnd Func WM_COMMAND($hWnd, $MsgID, $wParam, $lParam) Local Const $STN_DBLCLK = 1, $STN_CLICKED = 0 Local $nID = BitAND($wParam, 0xFFFF) Local $nNotifyCode = BitShift($wParam, 16) Switch $nNotifyCode Case $STN_CLICKED $Clicked = $nID Case $STN_DBLCLK $DoubleClicked = $nID EndSwitch Return $GUI_RUNDEFMSG EndFunc Func WM_NCHITTEST($hWnd, $iMsg, $iwParam, $ilParam) If $hWnd <> $GUI Or $iMsg <> $WM_NCHITTEST Then Return $GUI_RUNDEFMSG Local $iRet = _WinAPI_DefWindowProc($hWnd, $iMsg, $iwParam, $ilParam) For $i = 10 To 18 If $i = $iRet Then Return 1 Next If $iRet = 1 Then Return 2 Return $iRet EndFunc | Цитата: нужно сделать что-бы это окно можно было переносить с места на место за картинку | Цитата: как при всем вышесказанном еще и прикрутить действие на двойное нажатие по этой самой картинке | В примере выше оно сделано.
---------- ViSiToR a.k.a CreatoR CreatoR это не ник, CreatoR это стиль жизни! |
|