2014-09-03 20:21 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)

* src/rtl/gtwin/gtwin.c
    + added support for disabling [x] button of console window in older
      MS-Windows versions which do not have GetConsoleWindow() function,
      i.e. Win9x/ME
This commit is contained in:
Przemysław Czerpak
2014-09-03 20:21:09 +02:00
parent 2e65a28363
commit 169f5f3767
2 changed files with 53 additions and 1 deletions

View File

@@ -10,6 +10,12 @@
* Change, ! Fix, % Optimization, + Addition, - Removal, ; Comment
*/
2014-09-03 20:21 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rtl/gtwin/gtwin.c
+ added support for disabling [x] button of console window in older
MS-Windows versions which do not have GetConsoleWindow() function,
i.e. Win9x/ME
2014-08-27 18:19 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbserial.ch
* src/rtl/itemseri.c

View File

@@ -80,6 +80,7 @@
#include "hbapiitm.h"
#include "hbapierr.h"
#include "hbwinuni.h"
#include "hbdate.h"
#include "hbapicdp.h"
@@ -820,6 +821,45 @@ static HB_BOOL hb_gt_win_SetPalette( HB_BOOL bSet, COLORREF * colors )
#endif
}
HWND hb_getConsoleWindowHandle( void )
{
TCHAR oldTitle[ 256 ], tmpTitle[ 32 ];
HWND hWnd = NULL;
if( GetConsoleTitle( oldTitle, HB_SIZEOFARRAY( oldTitle ) ) )
{
int iTmp = 0;
DWORD dwVal;
tmpTitle[ iTmp++ ] = TEXT( '>' );
tmpTitle[ iTmp++ ] = TEXT( '>' );
dwVal = GetCurrentProcessId();
do
tmpTitle[ iTmp++ ] = TEXT( 'A' ) + dwVal % 26;
while( ( dwVal /= 26 ) );
tmpTitle[ iTmp++ ] = TEXT( ':' );
dwVal = GetTickCount();
do
tmpTitle[ iTmp++ ] = TEXT( 'A' ) + dwVal % 26;
while( ( dwVal /= 26 ) );
tmpTitle[ iTmp++ ] = TEXT( '<' );
tmpTitle[ iTmp++ ] = TEXT( '<' );
tmpTitle[ iTmp ] = TEXT( '\0' );
if( SetConsoleTitle( tmpTitle ) )
{
HB_MAXUINT nTimeOut = hb_dateMilliSeconds() + 200;
/* repeat in a loop to be sure title is changed */
do
hWnd = FindWindow( NULL, tmpTitle );
while( hWnd == NULL && hb_dateMilliSeconds() < nTimeOut );
SetConsoleTitle( oldTitle );
}
}
return hWnd;
}
static HB_BOOL hb_gt_win_SetCloseButton( HB_BOOL bSet, HB_BOOL bClosable )
{
static HB_BOOL s_bChecked = HB_FALSE;
@@ -833,6 +873,7 @@ static HB_BOOL hb_gt_win_SetCloseButton( HB_BOOL bSet, HB_BOOL bClosable )
#endif
HB_BOOL bOldClosable = HB_TRUE;
HWND hWnd;
if( ! s_bChecked )
{
@@ -848,8 +889,13 @@ static HB_BOOL hb_gt_win_SetCloseButton( HB_BOOL bSet, HB_BOOL bClosable )
}
if( s_pGetConsoleWindow )
hWnd = s_pGetConsoleWindow();
else
hWnd = hb_getConsoleWindowHandle();
if( hWnd )
{
HMENU hSysMenu = GetSystemMenu( s_pGetConsoleWindow(), FALSE );
HMENU hSysMenu = GetSystemMenu( hWnd, FALSE );
if( hSysMenu )
{