On-line: Pasha, гостей 1. Всего: 2 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 196
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.12.06 17:43. Заголовок: Min & Max окна


Подскажите можалуйста, как сделать программно, чтоб можно было открывать окно программы на весь экран (МАХ)
и минимизировать его на панель запуска (МИН), т.е. эмуляция нажатия кнопок "сверннуть" и "развернуть".

Спасибо: 0 
Профиль
Ответов - 24 , стр: 1 2 All [только новые]


постоянный участник




Пост N: 199
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 02.01.07 20:24. Заголовок: Re:


Поздравляю всех с Новым годом !
Желаю всем вам чтоб ваши проги не ломались !!!

Поднимаю предыдущий вопрос, как "сверннуть" и "развернуть" окно своей программы.

Спасибо: 0 
Профиль
Администратор




Пост N: 471
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 03.01.07 10:49. Заголовок: Re:


Andrey пишет:

 цитата:
Поздравляю всех с Новым годом !
Желаю всем вам чтоб ваши проги не ломались !!!



С новым счастьем !

по теме:
для gtwvt (подключить библиотеку wvtgui.lib):

Wvt_Minimize()
Wvt_Maximize()

Для gtwin - НЕ ЗНАЮ
Можно ли для консольного окна использовать винапишную ShowWindow() ?


Спасибо: 0 
Профиль
постоянный участник


Пост 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 );
}



Спасибо: 0 
Профиль
модератор




Пост N: 400
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 03.01.07 15:33. Заголовок: Re:


Pasha пишет:

 цитата:
Можно ли для консольного окна использовать винапишную ShowWindow() ?


Да, конечно, но потребуется хэндл этого консольного окна...


Спасибо: 0 
Профиль
постоянный участник


Пост N: 80
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 03.01.07 17:31. Заголовок: Re:


gfilatov пишет:

 цитата:
Да, конечно, но потребуется хэндл этого консольного окна...


Можно добыть с помощью HWND GetForegroundWindow( void )


Спасибо: 0 
Профиль
постоянный участник


Пост N: 81
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 03.01.07 17:31. Заголовок: Re:


gfilatov пишет:

 цитата:
Да, конечно, но потребуется хэндл этого консольного окна...


Можно добыть с помощью HWND GetForegroundWindow( void )


Спасибо: 0 
Профиль
Администратор




Пост 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


Спасибо: 0 
Профиль
постоянный участник




Пост N: 200
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.01.07 04:24. Заголовок: Re:


Всем вам Спасибо большое !
А можно ли сделать так как во многих прогах, т.е. если программа "свернутая" и юзер запускает еще одну копию задачи, чтоб она запускалась, проверяла есть ли запущенная копия и если запущена, то раскрывала запущенную уже программу (MAXIMIZE), а сама выходила.
Заранее спасибо.

Спасибо: 0 
Профиль
постоянный участник




Пост 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


Спасибо: 0 
Профиль
постоянный участник


Пост 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

Спасибо: 0 
Профиль
постоянный участник




Пост N: 204
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.01.07 21:29. Заголовок: Re:


Спасибо Петр большое. Заработало.

А можно ли сделать так как во многих прогах, т.е. если программа "свернутая" и юзер запускает еще одну копию задачи, чтоб она запускалась, проверяла есть ли запущенная копия и если запущена, то раскрывала запущенную уже программу (MAXIMIZE), а сама выходила.
Заранее спасибо.

Спасибо: 0 
Профиль
постоянный участник


Пост N: 91
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 09.01.07 11:28. Заголовок: Re:


А чем варианты с CreateMutex и FindWindow не устраивают?

Спасибо: 0 
Профиль
постоянный участник




Пост N: 208
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 09.01.07 14:16. Заголовок: Re:


Устраивают наверно, а где взять их пример использования ?

Спасибо: 0 
Профиль
модератор




Пост N: 404
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 10.01.07 11:28. Заголовок: Re:


Andrey пишет:

 цитата:
где взять их пример использования ?


Посмотри в исходниках и примерах библиотеки MiniGUI

Спасибо: 0 
Профиль



Пост N: 2
Зарегистрирован: 10.01.07
ссылка на сообщение  Отправлено: 10.01.07 12:57. Заголовок: Re:


Также спасибо. Пример работает, но на весь экран не разворачивается (XP,17 дюймов).
А можно ли задать размеры окна под XP, Например чтобы оставалась только нижняя строка на мониторе. Подскажите, кто знает... Спасибо.

Спасибо: 0 
Профиль



Пост 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


Спасибо: 0 
Профиль
постоянный участник




Пост N: 216
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.01.07 08:25. Заголовок: Re:


Мне бы тоже хотелось посмотреть как это выглядело бы для Harbou'ra для GTWVT-терминала (это как в Аляске гибридная мода) ?
Вопрос этот наверно нужно обращать к Диме или Григорию !
Ваши комментрарии Гуру Харбора ?

Спасибо: 0 
Профиль



Пост N: 31
Зарегистрирован: 10.01.07
ссылка на сообщение  Отправлено: 11.01.07 11:13. Заголовок: Re:


Андрей, смотри тему harbour-alaska. Дима сделал тестовый пример, положил на рапиру (tstzip) и кинул мне на мыло.
Очень симпатично выглядит...

Спасибо: 0 
Профиль
постоянный участник




Пост 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 )



Это наверно нужно каждому по запуску программы и управлению окнами.

Спасибо: 0 
Профиль
модератор




Пост 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

Спасибо: 0 
Профиль
Ответов - 24 , стр: 1 2 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 108
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет