Что нового

Изменение размера контрола вместе с GUI

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Как ни пробывала, не получается изменять размер контрола,
в поиске нашёл похожие темы, но ни одна не подошла.
У окна стиль $WS_SIZEBOX пробывал через Opt("GUIResizeMode", $GUI_DOCKALL),
ничего не получилось.

Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GUIRichEdit.au3>
#include <WinAPIEx.au3>
#Include <GUIMenu.au3>

Global Const $GWL_STYLE = -16

$hForm = GUICreate("FASM Editor", 700, 500, -1, -1, BitOR($WS_SYSMENU, $WS_MAXIMIZEBOX, $WS_MINIMIZEBOX, $WS_SIZEBOX))
; Файл
$Menu = GUICtrlCreateMenu ("&Файл")   ; Создаём меню
$NewItem = GUICtrlCreateMenuitem ("Создать",$Menu)
$OpenItem = GUICtrlCreateMenuitem ("Открыть",$Menu)
$SaveItem = GUICtrlCreateMenuitem ("Сохранить",$Menu)
$SaveAssItem = GUICtrlCreateMenuitem ("Сохранить как...",$Menu)
GUICtrlCreateMenuitem ("",$Menu)
$ExitItem = GUICtrlCreateMenuitem ("Выход",$Menu)
; Редактировать
$EditMenu = GUICtrlCreateMenu("Редактировать", -1, 1)
$UndoItem = GUICtrlCreateMenuItem("Отменить", $EditMenu)
$RedoItem = GUICtrlCreateMenuItem("Вернуть", $EditMenu)
GUICtrlCreateMenuItem("", $EditMenu)
$CutItem = GUICtrlCreateMenuItem("Вырезать", $EditMenu)
$CopyItem = GUICtrlCreateMenuItem("Копировать", $EditMenu)
$PasteItem = GUICtrlCreateMenuItem("Вставить", $EditMenu)
$SelectItem = GUICtrlCreateMenuItem("Выделить всё", $EditMenu)
; Помощь
$HelpMenu = GUICtrlCreateMenu("Помощь", -1, 2)
$AboutItem = GUICtrlCreateMenuItem("О программе", $HelpMenu)

$hRichEdit = _GUICtrlRichEdit_Create($hForm, "", 0, 0, 698, 455, BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))

GUISetState()
;_GUICtrlRichEdit_SetBkColor($hRichEdit, 0xD7FF99) ; Применяем цвет бакгроунда
;_GuiCtrlRichEdit_SetCharAttributes($hRichEdit, "+bo") ; применяем стиль текста жирный/подчёркнутый +bo/+un
_GUICtrlRichEdit_SetFont($hRichEdit, 11, "Lucida Console") ; Применяем размер и шрифт текста
_WinAPI_SetWindowLong($hForm, $GWL_STYLE, BitOR(_WinAPI_GetWindowLong($hForm, $GWL_STYLE), $WS_CLIPSIBLINGS,$WS_CLIPCHILDREN))

While 1

	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			GUIDelete()
			Exit
        Case $SelectItem
			_GuiCtrlRichEdit_SetSel($hRichEdit, _GuiCtrlRichEdit_GetFirstCharPosOnLine($hRichEdit, 1), -1)
        Case $SaveAssItem
			$SaveDialog = FileSaveDialog( "Сохранить", @DesktopDir, "Assembler (*.asm)",2+16)
			If Not @error Then _GuiCtrlRichEdit_StreamToFile($hRichEdit, $SaveDialog & ".asm")
		Case $AboutItem
			MsgBox(0, "FASM Editor","")
	EndSwitch
WEnd
 
Автор
V

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Да эт я знаю, хотелось бы нормально, когда изменяем
размеры окна чтоб не влияло на контрол, а здесь вот что:

Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GUIRichEdit.au3>
#include <WinAPIEx.au3>

Global Const $GWL_STYLE = -16

$hForm = GUICreate("Flat Assembler", 700, 500, -1, -1, BitOR($WS_SYSMENU, $WS_MAXIMIZEBOX, $WS_MINIMIZEBOX, $WS_SIZEBOX))
; Файл
$Menu = GUICtrlCreateMenu ("&Файл")   ; Создаём меню
$NewItem = GUICtrlCreateMenuitem ("Создать",$Menu)
$OpenItem = GUICtrlCreateMenuitem ("Открыть",$Menu)
$SaveItem = GUICtrlCreateMenuitem ("Сохранить",$Menu)
$SaveAssItem = GUICtrlCreateMenuitem ("Сохранить как...",$Menu)
GUICtrlCreateMenuitem ("",$Menu)
$ExitItem = GUICtrlCreateMenuitem ("Выход",$Menu)
; Редактировать
$EditMenu = GUICtrlCreateMenu("Редактировать", -1, 1)
$UndoItem = GUICtrlCreateMenuItem("Отменить", $EditMenu)
$RedoItem = GUICtrlCreateMenuItem("Вернуть", $EditMenu)
GUICtrlCreateMenuItem("", $EditMenu)
$CutItem = GUICtrlCreateMenuItem("Вырезать", $EditMenu)
$CopyItem = GUICtrlCreateMenuItem("Копировать", $EditMenu)
$PasteItem = GUICtrlCreateMenuItem("Вставить", $EditMenu)
$SelectItem = GUICtrlCreateMenuItem("Выделить всё", $EditMenu)
; Помощь
$HelpMenu = GUICtrlCreateMenu("Помощь", -1, 2)
$AboutItem = GUICtrlCreateMenuItem("О программе", $HelpMenu)

$hRichEdit = _GUICtrlRichEdit_Create($hForm, "", 0, 0, 698, 455, BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
GUICtrlSetResizing ($hRichEdit, 128+32 )
GUISetState()
;_GUICtrlRichEdit_SetBkColor($hRichEdit, 0xD7FF99) ; Применяем цвет бакгроунда
;_GuiCtrlRichEdit_SetCharAttributes($hRichEdit, "+bo") ; применяем стиль текста жирный/подчёркнутый +bo/+un
_GUICtrlRichEdit_SetFont($hRichEdit, 10, "Lucida Console") ; Применяем размер и шрифт текста
_WinAPI_SetWindowLong($hForm, $GWL_STYLE, BitOR(_WinAPI_GetWindowLong($hForm, $GWL_STYLE), $WS_CLIPSIBLINGS,$WS_CLIPCHILDREN))

While 1
	$hPos = WinGetPos($hForm)
    ControlMove($hRichEdit, "", "", 0, 0, $hPos[2], $hPos[3])
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			GUIDelete()
			Exit
		Case $UndoItem
            _GuiCtrlRichEdit_Undo($hRichEdit)
        Case $RedoItem
            _GuiCtrlRichEdit_Redo($hRichEdit)
        Case $CutItem
            _GuiCtrlRichEdit_Cut($hRichEdit)
		Case $CopyItem
			_GuiCtrlRichEdit_Copy($hRichEdit)			
		Case $PasteItem
			_GuiCtrlRichEdit_Paste($hRichEdit)
        Case $SelectItem
			_GuiCtrlRichEdit_SetSel($hRichEdit, _GuiCtrlRichEdit_GetFirstCharPosOnLine($hRichEdit, 1), -1)
        Case $SaveAssItem
			$SaveDialog = FileSaveDialog( "Сохранить", @DesktopDir, "Assembler (*.asm)",2+16)
			If Not @error Then _GuiCtrlRichEdit_StreamToFile($hRichEdit, $SaveDialog & ".asm")
		Case $AboutItem
			MsgBox(0, "Flat Assembler","")
	EndSwitch
WEnd
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Viktor1703 [?]
Да эт я знаю, хотелось бы нормально, когда изменяем
размеры окна чтоб не влияло на контрол, а здесь вот что:

Делай так :

Код:
;.................................
GUIRegisterMsg($WM_SIZE, "WM__SIZE")

While 1
    ;$hPos = WinGetPos($hForm)
    ;ControlMove($hRichEdit, "", "", 0, 0, $hPos[2], $hPos[3])
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            GUIDelete()
            Exit
       ;...........................................
    EndSwitch
WEnd


Func WM__SIZE($hWnd, $Msg, $wParam, $lParam)
	Local $iW = BitAND($lParam, 0xFFFF) 
	Local $iH = BitShift($lParam, 16) 
	Switch $hWnd
		Case $hForm
			ControlMove($hRichEdit, "", "", 0, 0, $iW, $iH)
	EndSwitch
	Return $GUI_RUNDEFMSG
EndFunc	;==>WM__SIZE



а это :
Код:
GUICtrlSetResizing ($hRichEdit, 128+32 )
- бесполезно.
Применима только для элементов,созданных с помощью : GUICtrlCreate...
 
Верх