Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Создание дочерних окон

Ответить
Настройки темы
[решено] Создание дочерних окон

Аватара для morgan1991

Старожил


Сообщения: 390
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: morgan1991
Дата: 17-07-2009
Люди добрые помогите пожалуйста.
Нашол в справке пример сосдания окна внутри которого ещё одно окно, но никак не могу понять как это работает.
Помогите пожалуйста разобраться.
Нужно как можно кратче!, чтоб небыло ничего лишнего...
Заранее спасибо...

-------
Хочу научиться писать драйвера на с++
Команда Grand Lions


Отправлено: 22:17, 16-07-2009

 

Аватара для Creat0R

Must AutoIt


Moderator


Сообщения: 3048
Благодарности: 1005

Профиль | Сайт | Отправить PM | Цитировать


morgan1991,
Цитата morgan1991:
никак не могу понять как это работает »
А как вы ожидаете от нас это понять, не зная о каком примере идёт речь?

P.S
И подберите более конкретное название темы, «Окно в окне» отражает ровным счётом ничего.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

Русское сообщество AutoIt | CreatoR's Lab | Opera AC Community


Отправлено: 23:37, 16-07-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Yashied

Старожил


Сообщения: 206
Благодарности: 88

Профиль | Отправить PM | Цитировать


Есть такая функция - SetParent. Поищи на форуме, если сам не сможешь разобраться, тогда поможем. Договорились?

Ну, или ждем proxy.

Отправлено: 00:10, 17-07-2009 | #3


Аватара для morgan1991

Старожил


Сообщения: 390
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


Вот пример:


Код: Выделить весь код
#AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StructureConstants.au3>
#include <GUIScrollBars.au3>
#include <ScrollBarConstants.au3>

    Local $nFileMenu, $nExititem, $GUIMsg, $hGUI, $h_cGUI, $h_cGUI2
    Local $listview, $button

    $hGUI = GUICreate("ScrollBar Example", 600, 600, -1, -1, BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU, $WS_SIZEBOX))
    GUISetBkColor(0x88AABB)

    $nFileMenu = GUICtrlCreateMenu("File")
    $nExititem = GUICtrlCreateMenuItem("Exit", $nFileMenu)
    $listview = GUICtrlCreateListView("col1  |col2|col3  ", 10, 10, 200, 150);,$LVS_SORTDESCENDING)
    $button = GUICtrlCreateButton("Value?", 75, 170, 70, 20)
    GUICtrlSetResizing($button, $GUI_DOCKALL)
    For $x = 1 To 30
        GUICtrlCreateListViewItem("item" & $x & "|col2|col3", $listview)
    Next
    GUICtrlSetResizing($listview, $GUI_DOCKALL)

    $h_cGUI = GUICreate("Child GUI", 200, 200, 10, 200, $WS_CHILD, $WS_EX_CLIENTEDGE, $hGUI)
    GUICtrlCreateButton("a button", 10, 10, 90, 20)
    GUISetBkColor(0X006400)
    GUISetState()
    GUICtrlSetResizing($h_cGUI, $GUI_DOCKALL)

    GUISwitch($hGUI)

    $h_cGUI2 = GUICreate("Child GUI", 200, 200, 215, 10, $WS_CHILD, $WS_EX_CLIENTEDGE, $hGUI)
    GUICtrlCreateButton("a button", 10, 10, 90, 20)
    GUISetBkColor(0X006400)
    GUISetState()
    GUICtrlSetResizing($h_cGUI2, $GUI_DOCKALL)

    GUISwitch($hGUI)

    GUISetState(@SW_SHOW, $hGUI)

    While 1
        $GUIMsg = GUIGetMsg()

        Switch $GUIMsg
            Case $GUI_EVENT_CLOSE, $nExititem
                ExitLoop
        EndSwitch
    WEnd

Мне просто нужно понять, какие параметры обязательны для организации такой структуры?

-------
Хочу научиться писать драйвера на с++
Команда Grand Lions


Отправлено: 00:57, 17-07-2009 | #4


Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


и такой пример:
читать дальше »


Код: Выделить весь код
Opt('GUIOnEventMode',       1)
Opt('MustDeclareVars',      1)
Opt('TrayIconDebug',        1)
Opt('TrayIconHide',         0)

#include <GUIConstants.au3>
#include <WindowsConstants.au3>

HotKeySet('{ESC}', '_Pro_Exit'); Закрыть скрипт: ESC
Global $hParentWin, $hChildWin
_Example_1()

Func _Example_1()
    GUIDelete($hParentWin)
    GUIDelete($hChildWin)

    $hParentWin = GUICreate('Родительскоре окно', 300, 400, 100, 250)
        GUISetOnEvent($GUI_EVENT_CLOSE, '_Pro_Exit')
        GUISetBkColor(0x0000ff, $hParentWin)

    GUICtrlCreateButton('Пример 1', 10, 170, 150, 22)
        GUICtrlSetOnEvent(-1, '_Open_Example_1')
    GUICtrlCreateButton('Пример 2', 10, 195, 150, 22)
        GUICtrlSetOnEvent(-1, '_Open_Example_2')

    $hChildWin = GUICreate('Дочерное окно', 250, 250, 300, 300, -1, -1, $hParentWin)
        GUISetOnEvent($GUI_EVENT_CLOSE, '_Win_Close')
        GUISetBkColor(0x00ff00, $hChildWin)

    GUISwitch($hParentWin)
    GUICtrlCreateTab(10, 10, 150, 150)
    GUICtrlCreateTabItem('1-1')
    GUICtrlCreateTabItem('1-1')

    GUISwitch($hChildWin)
    GUICtrlCreateTab(10, 10, 150, 150)
    GUICtrlCreateTabItem('2-1')
    GUICtrlCreateTabItem('2-1')

    GUISetState(@SW_SHOW, $hParentWin)
    GUISetState(@SW_SHOW, $hChildWin)
EndFunc

Func _Example_2()
    GUIDelete($hParentWin)
    GUIDelete($hChildWin)

    $hParentWin = GUICreate('Родительскоре окно', 550, 400, 100, 250)
        GUISetOnEvent($GUI_EVENT_CLOSE, '_Pro_Exit')
        GUISetBkColor(0x0000ff, $hParentWin)

    GUICtrlCreateButton('Пример 1', 10, 170, 150, 22)
        GUICtrlSetOnEvent(-1, '_Open_Example_1')
    GUICtrlCreateButton('Пример 2', 10, 195, 150, 22)
        GUICtrlSetOnEvent(-1, '_Open_Example_2')

    $hChildWin = GUICreate('Дочерное окно', 250, 250, 200, 20, BitOR($WS_CHILD, $WS_TABSTOP), -1, $hParentWin)
        GUISetOnEvent($GUI_EVENT_CLOSE, '_Win_Close')
        GUISetBkColor(0x00ff00, $hChildWin)

    GUISwitch($hParentWin)
    GUICtrlCreateTab(10, 10, 150, 150)
    GUICtrlCreateTabItem('1-1')
    GUICtrlCreateTabItem('1-1')

    GUISwitch($hChildWin)
    GUICtrlCreateTab(10, 10, 150, 150)
    GUICtrlCreateTabItem('2-1')
    GUICtrlCreateTabItem('2-1')

    GUISetState(@SW_SHOW, $hParentWin)
    GUISetState(@SW_SHOW, $hChildWin)
EndFunc

While 1
    Sleep(10)
WEnd

Func _Win_Close($hWnd='')
    If NOT Eval('hWnd') Then Assign('hWnd', @GUI_WinHandle, 1)
    GUIDelete($hWnd)
EndFunc

Func _Pro_Exit()
    Exit
EndFunc

Func _Open_Example_1()
    _Example_1()
EndFunc
Func _Open_Example_2()
    _Example_2()
EndFunc


Цитата Yashied:
Ну, или ждем proxy. »
угадал )



Пример, что выше, с комментариями:
читать дальше »

Код: Выделить весь код
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StructureConstants.au3>
#include <GUIScrollBars.au3>
#include <ScrollBarConstants.au3>

    Local $nFileMenu, $nExititem, $GUIMsg, $hGUI, $h_cGUI, $h_cGUI2
    Local $listview, $button

;~  Создается родительское окно
    $hGUI = GUICreate("ScrollBar Example", 600, 600, -1, -1, BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU, $WS_SIZEBOX))
    GUISetBkColor(0x88AABB)

    $nFileMenu = GUICtrlCreateMenu("File")
    $nExititem = GUICtrlCreateMenuItem("Exit", $nFileMenu)
    $listview = GUICtrlCreateListView("col1  |col2|col3  ", 10, 10, 200, 150);,$LVS_SORTDESCENDING)
    $button = GUICtrlCreateButton("Value?", 75, 170, 70, 20)
    GUICtrlSetResizing($button, $GUI_DOCKALL)
    For $x = 1 To 30
        GUICtrlCreateListViewItem("item" & $x & "|col2|col3", $listview)
    Next
    GUICtrlSetResizing($listview, $GUI_DOCKALL)

;~  Созхдается дочерное окно
;~  Указывается стиль: $WS_CHILD, тогда окно будет внутри родительского окна
;~  Указывается хэндел (указатель) на родительское окно: $hGUI
    $h_cGUI = GUICreate("Child GUI", 200, 200, 10, 200, BitOR($WS_CHILD, $WS_TABSTOP), $WS_EX_CLIENTEDGE, $hGUI)
    GUICtrlCreateButton("a button", 10, 10, 90, 20)
    GUICtrlCreateButton("a button", 10, 35, 90, 20)
    GUISetBkColor(0X006400)
    GUISetState()
    GUICtrlSetResizing($h_cGUI, $GUI_DOCKALL)

    GUISwitch($hGUI)

    $h_cGUI2 = GUICreate("Child GUI", 200, 200, 215, 10, BitOR($WS_CHILD, $WS_TABSTOP), $WS_EX_CLIENTEDGE, $hGUI)
    GUICtrlCreateButton("a button", 10, 10, 90, 20)
    GUISetBkColor(0X006400)
    GUISetState()
    GUICtrlSetResizing($h_cGUI2, $GUI_DOCKALL)

    GUISwitch($hGUI)

    GUISetState(@SW_SHOW, $hGUI)

    While 1
        $GUIMsg = GUIGetMsg()

        Switch $GUIMsg
            Case $GUI_EVENT_CLOSE, $nExititem
                ExitLoop
        EndSwitch
    WEnd

Одна беда у этой технологии, имхо все рушит, - то, что в дочерных окнах нет возможности перемещатся между элементами управления с помощью клавиши TAB ....
Запусти это пример и попробуй перейти с одной кнопки на другу через TAB (в окне где 2-е кнопки).

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:23, 17-07-2009 | #5


Аватара для Yashied

Старожил


Сообщения: 206
Благодарности: 88

Профиль | Отправить PM | Цитировать


Окно в окне.

Код: Выделить весь код
#Include <WindowsConstants.au3>

$hParent = GUICreate('Parent', 400, 400, 200, 200)
GUICtrlCreateLabel('', 0, 0, 0, 0)
GUISetState()
$hChild = GUICreate('MDI', 200, 200, 0, 0, BitOR($WS_CAPTION, $WS_MAXIMIZEBOX, $WS_MINIMIZEBOX, $WS_POPUP, $WS_SYSMENU))
DllCall('user32.dll', 'int', 'SetParent', 'hwnd', $hChild, 'hwnd', $hParent)
GUISetState()

Do
Until GUIGetMsg() = -3
Это сообщение посчитали полезным следующие участники:

Отправлено: 01:32, 17-07-2009 | #6


Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


Цитата Yashied:
DllCall('user32.dll', 'int', 'SetParent', 'hwnd', $hChild, 'hwnd', $hParent) »
Цитата:
GUICreate ( "title" [, width [, height [, left [, top [, style [, exStyle [, parent]]]]]]] )

parent - [optional] The handle of another previously created window - this new window then becomes a child of that window.
т.е.
Цитата proxy:
GUICreate('Дочерное окно', 250, 250, 300, 300, -1, -1, $hParentWin) »
или
Цитата proxy:
GUICreate('Дочерное окно', 250, 250, 200, 20, BitOR($WS_CHILD, $WS_TABSTOP), -1, $hParentWin) »

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?


Отправлено: 01:35, 17-07-2009 | #7


Аватара для Yashied

Старожил


Сообщения: 206
Благодарности: 88

Профиль | Отправить PM | Цитировать


Мысль не понял.

proxy, просто первоначальная тема имела название "Окно в окне ..." или как то так.

Отправлено: 01:50, 17-07-2009 | #8


Аватара для morgan1991

Старожил


Сообщения: 390
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


Цитата Yashied:
Мысль не понял. »
Это вроди одно и тоже...

Скажите вот ещё пожалуйста, а возможно ли сделать так:

есть окно, внутри него второе окно, можно ли заменить второе окно на третье, а потом обратно

-------
Хочу научиться писать драйвера на с++
Команда Grand Lions


Отправлено: 01:58, 17-07-2009 | #9


Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


Цитата Yashied:
Мысль не понял.
proxy, просто первоначальная тема имела название "Окно в окне ..." или как то так. »
так оно все и есть. Для создания дочерного окна, уже можно не использовать:
Цитата:
DllCall('user32.dll', 'int', 'SetParent', 'hwnd', $hChild, 'hwnd', $hParent)
так как можно указать вот так:
Цитата:
GUICreate('Дочерное окно', 250, 250, 300, 300, -1, -1, $hParentWin)

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?


Отправлено: 02:03, 17-07-2009 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Создание дочерних окон

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - Центрирование окон Проводника и окон приложений. vzli_izv Microsoft Windows 2000/XP 3 16-11-2009 02:34
Разное - Установка разрешений для дочерних папок и файлов 2022 Microsoft Windows 7 1 15-11-2009 23:34
Прочее - Нужна помощь в создании дочерних доменов buhanov Сетевые технологии 7 17-03-2008 08:09
Решено | XML. DOM. Поиск дочерних элементов. penykov Программирование и базы данных 3 27-04-2006 15:46
Проблема запуска дочерних служб (1068) Myanmar Microsoft Windows NT/2000/2003 3 18-10-2005 16:35




 
Переход