Migrei do clipper p/harbour usando a HMG 3.0.35.
Minha migração foi ainda em modo console.
Até a versão do Win XP, se a gente pressioniar "Alt+Enter" ele abre nosso programa em tela cheia.
A partir do win Vista (se não me engano) isso foi desabilitado e das versões seguintes também.
Aí encontrei uma rotina (um exemplo bem simples) que permite decidir se aplicamos o nosso aplicativo em modo janela ou tela cheia.
Aí o exemplo que peguei necessita que a gente compile junto uma rotina feita na linguagem C.
Esse arquivo chama-se fullscreen.c
Então, como faço para incluí-lo na compilação? pois já tentei os seguintes métodos e não funciona:
1 - se eu acrescentá-lo no arquivo .HBP quando a gente vai compilar (F5) no HMG ele desaparece.
2 - se eu tentar incluí-lo na seção "INCLUDES" a mesma coisa acontece; aliás, a HMG nem aceita incluí-lo em lugar algum.
3 - tentei então em configurações e incluir na seção "additional LIBs" e lá aceita, só que o aplicativo ao ser compilado ele apresenta uma tela de erro, mas, não aparece nenhuma informação para que a gente possa corrigir.
Portanto, qual o procedimento para se compilar junto com o harbour HMG uma rotina em "C"?
segue cópia do arquivo em "C" (fullscreen.c):
Código: Selecionar todos
/****************************
*
* fullscreen.c
*
* Stanis - stanis.luksys@gmail.com
* Nenhuma licença de uso, faça o que bem entender
*
* JAMAIS utilize fora do modo 25x80
* pode causar danos de HARDWARE
*
*/
#include "windows.h"
#include "hbapi.h"
DISPLAY_DEVICE GetPrimaryDevice()
{
int index=0;
DISPLAY_DEVICE dd;
dd.cb = sizeof(DISPLAY_DEVICE);
while (EnumDisplayDevices(NULL, index++, &dd, 0))
{
if (dd.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE) return dd;
}
return dd;
}
BOOL SetDisplayResolution(long PelsWidth, long PelsHeight)
{
DISPLAY_DEVICE dd = GetPrimaryDevice();
DEVMODE dm;
dm.dmSize = sizeof(DEVMODE);
if (!EnumDisplaySettings(dd.DeviceName, ENUM_CURRENT_SETTINGS, &dm))
{
return FALSE;
}
dm.dmPelsWidth = PelsWidth;
dm.dmPelsHeight = PelsHeight;
dm.dmFields = (DM_PELSWIDTH | DM_PELSHEIGHT);
if (ChangeDisplaySettings(&dm, CDS_TEST) !=DISP_CHANGE_SUCCESSFUL)
{
return FALSE;
}
return (ChangeDisplaySettings(&dm, CDS_FULLSCREEN)==DISP_CHANGE_SUCCESSFUL);
}
HB_FUNC ( SETDISPLAYMODEFULLSCREEN )
{
HWND hWnd = FindWindow( NULL, hb_parc( 1 ) );
SetDisplayResolution( 800, 600 );
ShowWindow( hWnd, 0 );
SetWindowLong( hWnd, GWL_STYLE, WS_SYSMENU );
ShowWindow( hWnd, 3 );
}
HB_FUNC ( SETDISPLAYMODENORMAL )
{
HWND hWnd = FindWindow( NULL, hb_parc( 1 ) );
ChangeDisplaySettings(NULL, 0);
ShowWindow( hWnd, 0 );
SetWindowLong( hWnd, GWL_STYLE, WS_TILEDWINDOW );
ShowWindow( hWnd, 1 );
}
Código: Selecionar todos
#include "hbgtinfo.ch"
/*
* RECOMENDO SEMPRE UTILIZAR EXIT PROCEDURE
* PARA VOLTAR A MODO NORMAL
*/
INIT PROCEDURE Primeira()
SetDisplayFullScreen(1)
RETURN
EXIT PROCEDURE Ultima()
SetDisplayFullScreen(0)
RETURN
/****
* Main()
*/
PROCEDURE Main()
SET COLOR TO "N+/B"
CLS
SET CURSOR OFF
FOR i:=1 TO Int(MaxCol()/10)
@ MaxRow()-2, i*10 SAY Str(i,1)
NEXT
@ MaxRow()-1, 11 SAY Replicate("123456789 ",10)
FOR i:=1 TO 30
@ i, 1 SAY StrZero(i,2)
NEXT
SET COLOR TO "W+/B,W+/BG"
@ 00, 00 TO MaxRow(), MaxCol()
@ 00, 00 say "TL"
@ 00, MaxCol()-1 say "TR"
@ MaxRow(), 00 say "BL"
@ MaxRow(), MaxCol()-1 say "BR"
@ 07, 5 SAY PAdC( "Simula‡Æo de Tela Cheia no Windows 7", MaxCol()-10 )
@ 10, 5 SAY PAdC( "Sua resolu‡Æo de tela foi alterada para 800 X 600." , MaxCol()-10 )
@ 11, 5 SAY PAdC( "Se esta nÆo ‚ a sua resolu‡Æo padrÆo, a configura‡Æo" , MaxCol()-10 )
@ 12, 5 SAY PAdC( "anterior ser recarregada automaticamente ao final" , MaxCol()-10 )
@ 13, 5 SAY PAdC( "da execu‡Æo deste programa." , MaxCol()-10 )
DO WHILE .T.
@ 17, 20 PROMPT " TELA CHEIA "
@ 17, 34 PROMPT " TELA JANELADA "
@ 17, 52 PROMPT " SAIR "
MENU TO nMenu
DO CASE
CASE nMenu == 1
SetDisplayFullScreen(1)
CASE nMenu == 2
SetDisplayFullScreen(0)
OTHERWISE
EXIT
ENDCASE
ENDDO
RETURN
/****
* SetDisplayFullScreen()
*/
PROCEDURE SetDisplayFullScreen( nMode )
LOCAL cScr := savescreen(0,0,maxrow(),maxcol())
IF nMode == 1
Hb_GtInfo( HB_GTI_CODEPAGE, 255 )
Hb_GtInfo( HB_GTI_FONTNAME, "Consolas" )
Hb_GtInfo( HB_GTI_FONTQUALITY, HB_GTI_FONTQ_HIGH )
Hb_GtInfo( HB_GTI_FONTWIDTH, 10 )
Hb_GtInfo( HB_GTI_FONTSIZE, 24 )
SetDisplayModeFullScreen( Hb_GtInfo( HB_GTI_WINTITLE ) )
ELSE
Hb_GtInfo( HB_GTI_FONTWIDTH, 9 )
Hb_GtInfo( HB_GTI_FONTSIZE, 20 )
SetDisplayModeNormal( Hb_GtInfo( HB_GTI_WINTITLE ) )
ENDIF
SetMode(25,80)
restscreen( 0, 0, maxrow(), maxcol(), cScr )
RETURN
Código: Selecionar todos
-oteste
-w0 -es2
-mt
-gtwvw
-gui
teste.prg
fullscreen.c
Código: Selecionar todos
hbmk2: Processando op‡äes do ambiente: -compiler=mingw
hbmk2: Processando arquivo de configura‡Æo:
G:\MVinfo\hmg.3.0.35\harbour\bin\hbmk.cfg
hbmk2: Processando: SICCA34.hbc
hbmk2: Processando: SICCA341.hbc
Harbour 2.0.0 (Rev. 13372)
Copyright (c) 1999-2010, http://www.harbour-project.org/
pci10033.c:1: fatal error: can't open C:\DOCUME~1\wal\CONFIG~1\Temp\ccFFXjl9.s for writing: Invalid argument
compilation terminated.
pci10035.c:1: fatal error: can't open C:\DOCUME~1\wal\CONFIG~1\Temp\ccFFXjl9.s for writing: Invalid argument
compilation terminated.
pci10126.c:1: fatal error: can't open C:\DOCUME~1\wal\CONFIG~1\Temp\ccFFXjl9.s for writing: Invalid argument
compilation terminated.
pci10254.c:1: fatal error: can't open C:\DOCUME~1\wal\CONFIG~1\Temp\ccFFXjl9.s for writing: Invalid argument
compilation terminated.
pci10255.c:1: fatal error: can't open C:\DOCUME~1\wal\CONFIG~1\Temp\ccFFXjl9.s for writing: Invalid argument
compilation terminated.
pci10256.c:1: fatal error: can't open C:\DOCUME~1\wal\CONFIG~1\Temp\ccFFXjl9.s for writing: Invalid argument
compilation terminated.
hbmk2: Erro: Executando compilador C. 1
gcc.exe -c -O3 -march=i586 -mtune=pentiumpro -fomit-frame-pointer -O3 -Wall -W -IG:/MVinfo/hmg.3.0.35/harbour/include -IG:/MVinfo/hmg.3.0.35//include -IG:/MVinfo/hb32/migrar/sci10000 -IG:/MVinfo/hb32/migrar/sci10000/ pci10000.c dci10000.c dci10001.c dci10002.c ext.c impresso.c pci10001.c pci10002.c pci10003.c pci10004.c pci10005.c pci10006.c pci10007.c pci10008.c pci10009.c pci10012.c pci10013.c pci10014.c pci10015.c pci10016.c pci10017.c pci10018.c pci10019.c pci10020.c pci10021.c pci10022.c pci10024.c pci10025.c pci10026.c pci10027.c pci10028.c pci10031.c pci10032.c pci10033.c pci10034.c pci10035.c pci10038.c pci10039.c pci10040.c pci10041.c pci10042.c pci10043.c pci10044.c pci10045.c pci10046.c pci10047.c pci10100.c pci10102.c pci10110.c pci10115.c pci10116.c pci10120.c pci10121.c pci10122.c pci10123.c pci10124.c pci10125.c pci10126.c pci10127.c pci10130.c pci10131.c pci10132.c pci10133.c pci10135.c pci10136.c pci10140.c pci10151.c pci10152.c pci10200.c pci10202.c pci10203.c pci10204.c pci10210.c pci10211.c pci10212.c pci10213.c pci10215.c pci10216.c pci10217.c pci10220.c pci10221.c pci10222.c pci10225.c pci10226.c pci10227.c pci10228.c pci10229.c pci10230.c pci10231.c pci10240.c pci10250.c pci10251.c pci10252.c pci10254.c pci10255.c pci10256.c pci10260.c pci10270.c pci10271.c pci10272.c pci10273.c pci10995.c pci10996.c pci10997.c pci10998.c pci10999.c pimpr105.c pimpr110.c pimpr115.c pimpr120.c pimpr121.c pimpr125.c pimpr130.c rci10000.c rimpr000.c rotinas5.c C:\DOCUME~1\wal\CONFIG~1\Temp\hbmk_4n84mz.c
Agradeço se alguém souber a resolução do problema.
Atenciosamente,
MICROVOLUTION.

