Автор | Сообщение |
|
| постоянный участник
|
Пост N: 196
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.12.06 17:43. Заголовок: Min & Max окна
Подскажите можалуйста, как сделать программно, чтоб можно было открывать окно программы на весь экран (МАХ) и минимизировать его на панель запуска (МИН), т.е. эмуляция нажатия кнопок "сверннуть" и "развернуть".
|
|
|
Ответов - 24
, стр:
1
2
All
[только новые]
|
|
|
| постоянный участник
|
Пост N: 199
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.01.07 20:24. Заголовок: Re:
Поздравляю всех с Новым годом ! Желаю всем вам чтоб ваши проги не ломались !!! Поднимаю предыдущий вопрос, как "сверннуть" и "развернуть" окно своей программы.
|
|
|
|
| Администратор
|
Пост N: 471
Зарегистрирован: 23.05.05
|
|
Отправлено: 03.01.07 10:49. Заголовок: Re:
Andrey пишет: цитата: | Поздравляю всех с Новым годом ! Желаю всем вам чтоб ваши проги не ломались !!! |
| С новым счастьем ! по теме: для gtwvt (подключить библиотеку wvtgui.lib): Wvt_Minimize() Wvt_Maximize() Для gtwin - НЕ ЗНАЮ Можно ли для консольного окна использовать винапишную ShowWindow() ?
|
|
|
|
| постоянный участник
|
Пост N: 79
Зарегистрирован: 09.10.06
|
|
Отправлено: 03.01.07 14:37. Заголовок: Re:
Pasha пишет: цитата: | Можно ли для консольного окна использовать винапишную ShowWindow() ? |
| Wvt_Minimize() и Wvt_Maximize() так и делают HB_FUNC( WVT_MINIMIZE ) { ShowWindow( _s->hWnd, SW_MINIMIZE ); } HB_FUNC( WVT_MAXIMIZE ) { ShowWindow( _s->hWnd, SW_RESTORE ); }
|
|
|
|
| модератор
|
Пост N: 400
Зарегистрирован: 25.05.05
|
|
Отправлено: 03.01.07 15:33. Заголовок: Re:
Pasha пишет: цитата: | Можно ли для консольного окна использовать винапишную ShowWindow() ? |
| Да, конечно, но потребуется хэндл этого консольного окна...
|
|
|
|
| постоянный участник
|
Пост N: 80
Зарегистрирован: 09.10.06
|
|
Отправлено: 03.01.07 17:31. Заголовок: Re:
gfilatov пишет: цитата: | Да, конечно, но потребуется хэндл этого консольного окна... |
| Можно добыть с помощью HWND GetForegroundWindow( void )
|
|
|
|
| постоянный участник
|
Пост N: 81
Зарегистрирован: 09.10.06
|
|
Отправлено: 03.01.07 17:31. Заголовок: Re:
gfilatov пишет: цитата: | Да, конечно, но потребуется хэндл этого консольного окна... |
| Можно добыть с помощью HWND GetForegroundWindow( void )
|
|
|
|
| Администратор
|
Пост N: 472
Зарегистрирован: 23.05.05
|
|
Отправлено: 03.01.07 17:59. Заголовок: Re:
Действительно, кажется работает #pragma BEGINDUMP #include "hbapi.h" #include <windows.h> HB_FUNC( MINIMIZE ) { ShowWindow(GetForegroundWindow(), SW_MINIMIZE ); } HB_FUNC( MAXIMIZE ) { ShowWindow(GetForegroundWindow(), SW_RESTORE ); } #pragma ENDDUMP
|
|
|
|
| постоянный участник
|
Пост N: 200
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.01.07 04:24. Заголовок: Re:
Всем вам Спасибо большое ! А можно ли сделать так как во многих прогах, т.е. если программа "свернутая" и юзер запускает еще одну копию задачи, чтоб она запускалась, проверяла есть ли запущенная копия и если запущена, то раскрывала запущенную уже программу (MAXIMIZE), а сама выходила. Заранее спасибо.
|
|
|
|
| постоянный участник
|
Пост N: 201
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.01.07 15:38. Заголовок: Re:
/* Всех с Рождеством и прошедшим Новым Годом ! Почему-то не работает MAXIMIZE(). Подскажите где исправить. */ FUNCTION MAIN SETCOLOR("15/2") CLEAR SCREEN MINIMIZE() INKEY(4) MAXIMIZE() tone(400,2) WAIT RETURN NIL #pragma BEGINDUMP #include "hbapi.h" #include <windows.h> HB_FUNC( MINIMIZE ) { ShowWindow(GetForegroundWindow(), SW_MINIMIZE ); } HB_FUNC( MAXIMIZE ) { ShowWindow(GetForegroundWindow(), SW_RESTORE ); } #pragma ENDDUMP
|
|
|
|
| постоянный участник
|
Пост N: 90
Зарегистрирован: 09.10.06
|
|
Отправлено: 08.01.07 20:29. Заголовок: Re:
Andrey пишет: цитата: | Почему-то не работает MAXIMIZE(). Подскажите где исправить. |
| см. описание GetForegroundWindow() INIT PROCEDURE GetHandle() PUBLIC hWnd := GetForegroundWindow() /* */ FUNCTION MAIN SETCOLOR("15/2") CLEAR SCREEN MINIMIZE( hWnd ) INKEY(4) MAXIMIZE( hWnd ) tone(400,2) WAIT RETURN NIL /* * C - level */ #pragma BEGINDUMP #include "hbapi.h" #include <windows.h> HB_FUNC( GETFOREGROUNDWINDOW ) { hb_retnl( (LONG) GetForegroundWindow() ); } HB_FUNC( MINIMIZE ) { ShowWindow( (HWND) hb_parnl(1), SW_MINIMIZE ); } HB_FUNC( MAXIMIZE ) { ShowWindow( (HWND) hb_parnl(1), SW_RESTORE ); } #pragma ENDDUMP
|
|
|
|
| постоянный участник
|
Пост N: 204
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.01.07 21:29. Заголовок: Re:
Спасибо Петр большое. Заработало. А можно ли сделать так как во многих прогах, т.е. если программа "свернутая" и юзер запускает еще одну копию задачи, чтоб она запускалась, проверяла есть ли запущенная копия и если запущена, то раскрывала запущенную уже программу (MAXIMIZE), а сама выходила. Заранее спасибо.
|
|
|
|
|
| постоянный участник
|
Пост N: 91
Зарегистрирован: 09.10.06
|
|
Отправлено: 09.01.07 11:28. Заголовок: Re:
А чем варианты с CreateMutex и FindWindow не устраивают?
|
|
|
|
| постоянный участник
|
Пост N: 208
Зарегистрирован: 12.09.06
|
|
Отправлено: 09.01.07 14:16. Заголовок: Re:
Устраивают наверно, а где взять их пример использования ?
|
|
|
|
| модератор
|
Пост N: 404
Зарегистрирован: 25.05.05
|
|
Отправлено: 10.01.07 11:28. Заголовок: Re:
Andrey пишет: цитата: | где взять их пример использования ? |
| Посмотри в исходниках и примерах библиотеки MiniGUI
|
|
|
|
| |
Пост N: 2
Зарегистрирован: 10.01.07
|
|
Отправлено: 10.01.07 12:57. Заголовок: Re:
Также спасибо. Пример работает, но на весь экран не разворачивается (XP,17 дюймов). А можно ли задать размеры окна под XP, Например чтобы оставалась только нижняя строка на мониторе. Подскажите, кто знает... Спасибо.
|
|
|
|
| |
Пост N: 3
Зарегистрирован: 10.01.07
|
|
Отправлено: 10.01.07 13:07. Заголовок: Re:
Под Аляской установка размеров экрана и шрифтов, делается так в текстовом режиме. А как сделать в Harbour? Подскажите. Проверка запущенного приложения наверно можно сделать по аналогии Static wnamearm:="okno" PROCEDURE AppSys() #define DEF_ROWS 25 #define DEF_COLS 80 #define DEF_FONTHEIGHT 28 #define DEF_FONTWIDTH 13 LOCAL nAppType := AppType(),oCrt LOCAL aSizeDesktop, aPos ,hWindow hWindow = DllCALL("USER32.DLL",DLL_STDCALL,"FindWindowExA",nil,nil,nil,wnamearm) hWindow=0 aSizeDesktop := AppDesktop():currentSize() apos:={-4,27} // Create XbpCRT object oCrt := XbpCrt():New ( NIL, NIL, aPos, DEF_ROWS, DEF_COLS ) oCrt:FontWidth := DEF_FONTWIDTH oCrt:FontHeight := DEF_FONTHEIGHT // oCrt:title := AppName() // oCrt:FontName := "MS Sans Serif "//Courier" oCrt:FontName := "Lucida Console" //"Arial" // "Tahoma " //"MS Sans Serif "//Courier" oCrt:close := {|| AppQuit() } ocrt:icon :=1 oCrt:Create() oCrt:PresSpace() oCrt:lbDblClick := {| aPos, uNIL, self |PostAppEvent(K_ENTER) } SetAppWindow ( oCrt ) // проверка приложения. if hWindow<>0 @3,10 Say "Приложение уже запущено." @5,10 Say "Для продолжения - Нажмите любую клавишу." inkey(0) DllCALL("USER32.DLL",DLL_STDCALL,"SetForegroundWindow",hwindow) DllCALL("USER32.DLL",DLL_STDCALL,"ShowWindow",hWindow,9) Quit ELSE hWindow = oCrt:GetHWND() DllCALL("USER32.DLL",DLL_STDCALL,"ShowWindow",hWindow,6) DllCALL("USER32.DLL",DLL_STDCALL,"ShowWindow",hWindow,9) eNDIF SetAppFocus( oCrt ) RETURN
|
|
|
|
| постоянный участник
|
Пост N: 216
Зарегистрирован: 12.09.06
|
|
Отправлено: 11.01.07 08:25. Заголовок: Re:
Мне бы тоже хотелось посмотреть как это выглядело бы для Harbou'ra для GTWVT-терминала (это как в Аляске гибридная мода) ? Вопрос этот наверно нужно обращать к Диме или Григорию ! Ваши комментрарии Гуру Харбора ?
|
|
|
|
| |
Пост N: 31
Зарегистрирован: 10.01.07
|
|
Отправлено: 11.01.07 11:13. Заголовок: Re:
Андрей, смотри тему harbour-alaska. Дима сделал тестовый пример, положил на рапиру (tstzip) и кинул мне на мыло. Очень симпатично выглядит...
|
|
|
|
| постоянный участник
|
Пост N: 219
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.01.07 13:42. Заголовок: Re:
aisid пишет: цитата: | Очень симпатично выглядит... |
| Пример выглядит симпатично, но мне хотелось бы чтоб полностью перевели твой пример в этой теме на xHarbour. aisid пишет: цитата: | / проверка приложения. if hWindow<>0 @3,10 Say "Приложение уже запущено." @5,10 Say "Для продолжения - Нажмите любую клавишу." inkey(0) DllCALL("USER32.DLL",DLL_STDCALL,"SetForegroundWindow",hwindow) DllCALL("USER32.DLL",DLL_STDCALL,"ShowWindow",hWindow,9) Quit ELSE hWindow = oCrt:GetHWND() DllCALL("USER32.DLL",DLL_STDCALL,"ShowWindow",hWindow,6) DllCALL("USER32.DLL",DLL_STDCALL,"ShowWindow",hWindow,9) eNDIF SetAppFocus( oCrt ) |
| Это наверно нужно каждому по запуску программы и управлению окнами.
|
|
|
|
| модератор
|
Пост N: 407
Зарегистрирован: 25.05.05
|
|
Отправлено: 12.01.07 16:56. Заголовок: Рабочий пример
Andrey пишет: цитата: | А можно ли сделать так как во многих прогах, т.е. если программа "свернутая" и юзер запускает еще одну копию задачи, чтоб она запускалась, проверяла есть ли запущенная копия и если запущена, то раскрывала запущенную уже программу (MAXIMIZE), а сама выходила. |
| Так это выглядит с использованием библиотеки MiniGUI (может сможете использовать идею): #include "minigui.ch" #define APP_TITLE 'Main Window' FUNCTION Main() Local hWnd IF IsExeRunning( cFileName( HB_ArgV( 0 ) ) ) hWnd = FindWindow( APP_TITLE ) IF hWnd > 0 if IsIconic( hWnd ) Restore( hWnd ) else SetForeGroundWindow( hWnd ) endif ELSE RETURN NIL ENDIF ELSE DEFINE WINDOW Form_Main ; AT 0,0 ; WIDTH 640 HEIGHT 480 ; TITLE APP_TITLE ; MAIN END WINDOW CENTER WINDOW Form_Main ACTIVATE WINDOW Form_Main ENDIF RETURN NIL /* */ function cFileName( cPathMask ) RETURN cFileNoPath( cPathMask ) /* */ Function cFileDisc( cPathMask ) RETURN If( At( ":", cPathMask ) == 2, Upper( Left( cPathMask, 2 ) ), "" ) /* */ Function cFilePath( cPathMask ) LOCAL n := RAt( "\", cPathMask ) RETURN If( n > 0, Upper( Left( cPathMask, n ) ), cFileDisc( cPathMask ) + "\" ) /* */ Function cFileNoPath( cPathMask ) LOCAL n := RAt( "\", cPathMask ) RETURN If( n > 0 .and. n < Len( cPathMask ), ; Right( cPathMask, Len( cPathMask ) - n ), ; If( ( n := At( ":", cPathMask ) ) > 0, ; Right( cPathMask, Len( cPathMask ) - n ), cPathMask ) ) /* */ Function cFileNoExt( cPathMask ) LOCAL cName := AllTrim( cFileNoPath( cPathMask ) ) LOCAL n := At( ".", cName ) RETURN AllTrim( If( n > 0, Left( cName, n - 1 ), cName ) ) #pragma BEGINDUMP #define HB_OS_WIN_32_USED #define _WIN32_WINNT 0x0400 #include <windows.h> #include "hbapi.h" #include "hbapiitm.h" HB_FUNC( ISICONIC ) { hb_retl( IsIconic( ( HWND ) hb_parnl( 1 ) ) ); } HB_FUNC ( FINDWINDOW ) { hb_retnl( ( LONG ) FindWindow( 0, hb_parc( 1 ) ) ); } #pragma ENDDUMP
|
|
|
Ответов - 24
, стр:
1
2
All
[только новые]
|
|