bencz Posted July 25, 2014 Report Share Posted July 25, 2014 Bom dia... Tenho um botão no menu, onde, quando clico nele, o programa tecnicamente é fechado, mas o processo continua em execução: MENUITEM "Sai&r" ACTION oWnd:End() Conversando com o Kapiaba, ele me apresentou o seguinte: FreeResources() // Set Resources To Release All SysRefresh() /*limpia arreglo y llama al colecor de basura de xharbour*/ //-> Lixeira HB_GCALL( .T. ) PostQuitMessage( 0 ) // use sempre na saida do seu programa QUIT // must be QUIT !!! Mas ficou a duvida, como utilizo isto ? {è um override do metodo end ? Como posso utilizar tal procecimento ? Quote Link to comment Share on other sites More sharing options...
emotta Posted July 25, 2014 Report Share Posted July 25, 2014 oWnd:End() não fecha a aplicação, fecha somente a Window... Pra finalizar a aplicação, sempre após fechar a window principal voce tem que dar o QUIT... Eu pra finalizar minha aplicação faço assim: MENUITEM "Sai&r" ACTION MyQuit() Function MyQui() oWndMain:End() DbCommitAll()DbCloseAll() Quit Return .t. Bom dia... Tenho um botão no menu, onde, quando clico nele, o programa tecnicamente é fechado, mas o processo continua em execução: MENUITEM "Sai&r" ACTION oWnd:End() Conversando com o Kapiaba, ele me apresentou o seguinte: FreeResources() // Set Resources To Release All SysRefresh() /*limpia arreglo y llama al colecor de basura de xharbour*/ //-> Lixeira HB_GCALL( .T. ) PostQuitMessage( 0 ) // use sempre na saida do seu programa QUIT // must be QUIT !!! Mas ficou a duvida, como utilizo isto ? {è um override do metodo end ? Como posso utilizar tal procecimento ? Quote Link to comment Share on other sites More sharing options...
kapiaba Posted July 25, 2014 Report Share Posted July 25, 2014 Desculpe, nao tinha entendido a pergunta: #include "FiveWin.ch" static oWnd function Main() local oBar LOCAL hBorland PRIVATE VERSAOPRODUTO := "1.00", DATAVERSAO := DATE(), HORAVERSAO := TIME() PRIVATE PUBNUMSER := "24242424242424242424" PRIVATE DIRATUAL := "C:\MYAPP" PRIVATE OPERATOR := "kapiaba" PRIVATE cEstacao := "Minha Rede" SET CENTURY ON SET DATE BRITISH SET EPOCH TO YEAR( DATE() ) - 30 hBorland := LoadLibrary('BWCC32.DLL') BWCCRegister( GetResources() ) DEFINE WINDOW oWnd TITLE "3D objects Using Borland" DEFINE BUTTONBAR oBar _3D OF oWnd DEFINE BUTTON OF oBar ACTION MainSobri() DEFINE BUTTON OF oBar ACTION ( TERMINAR(), oWnd:End() ) SET MESSAGE OF oWnd TO "3D Objects Using Borland" NOINSET CLOCK DATE KEYBOARD ACTIVATE WINDOW oWnd return nil FUNCTION MainSobri() LOCAL PULI,PLAO,WT,TABA,OIST,WORK,TABS Local oDlgI,oFnt,oFnt9,oFntB,oFnt9B,oFnt9I,oFntGB Local oSay1,oSB1,oSB2,oSB3,oBt LOCAL oSay2,oSay3,oSay4,oSay5,oSay6,oSay7,oSay8 Local cDescri := "Versão "+VERSAOPRODUTO+" - "+DTOC(DATAVERSAO)+' - '+HORAVERSAO Local cNumSer := AllTrim(PUBNUMSER) Local cEstacao := NetName() /* // ??? DO CASE CASE TIPODOSO = 0; WT='Windows 95, 98 ou Me' CASE TIPODOSO = 1; WT='Windows Nt, Xp ou 2000' CASE TIPODOSO = 2; WT='Windows 3.11' CASE TIPODOSO = 3; WT='Windows Desconhecido' ENDCASE */ Define Font oFntGB Name "Ms Sans Serif" Size 0, -16 Bold Define Font oFnt Name "Ms Sans Serif" Size 0, -6 Define Font oFnt9 Name "Ms Sans Serif" Size 0, -10 Define Font oFnt9B Name "Ms Sans Serif" Size 0, -13 Define Font oFnt9I Name "Ms Sans Serif" Size 0, -12 //UnderLine Define Font oFntB Name "Ms Sans Serif" Size 0, -8 Bold DEFINE DIALOG oDlgI RESOURCE "DSOBRE" FONT oFnt TRANSPARENT ; COLORS CLR_BLACK, CLR_WHITE REDEFINE SAY oSay1 ID 200 Of oDlgI Font oFntGB REDEFINE SAY oSay2 ID 201 Of oDlgI Font oFnt9 REDEFINE SAY oSay3 Var cDescri ID 100 Of oDlgI Font oFnt9 Color "B+/W" REDEFINE SAY oSay4 Var cNumSer ID 101 Of oDlgI Font oFnt9B Color "R+/W" REDEFINE SAY oSay5 Var DIRATUAL ID 102 Of oDlgI Font oFntB REDEFINE SAY oSay6 Var WT ID 103 Of oDlgI Font oFntB REDEFINE SAY oSay7 Var OPERATOR ID 105 Of oDlgI Font oFntB REDEFINE SAY oSay8 Var cEstacao ID 106 Of oDlgI Font oFntB REDEFINE BUTTON oSB3 ID 111 OF oDlgI //Action VaParaWeb() oSB3:cToolTip:="Vai para home page da empresa" oSB3:SetFont(oFnt9I) REDEFINE BUTTON oBt ID 112 OF oDlgI Action oDlgI:End() oBt:SetFont(oFnt9I) Activate dialog oDlgI CENTERED oFntGB:End() oFnt:End() oFnt9:End() oFnt9B:End() oFnt9I:End() oFntB:End() RETURN NIL FUNCTION TERMINAR() FreeResources() // Set Resources To Release All SysRefresh() /*limpia arreglo y llama al colecor de basura de xharbour*/ //-> Lixeira HB_GCALL( .T. ) PostQuitMessage( 0 ) // use sempre na saida do seu programa QUIT // must be QUIT !!! RETURN NIL DLL32 FUNCTION BWCCRegister( hInst AS LONG ) AS WORD PASCAL LIB "BWCC32.DLL" Quote Link to comment Share on other sites More sharing options...
giovanyvecchi Posted July 25, 2014 Report Share Posted July 25, 2014 Sair do meio do programa pode deixar recursos abertos e algumas amarrações pendentes na memoria. O certo vc coloca no inicio do seu prg uma função para determinar que é para executar quando fechar o programa Para fechar invoque o comando abaixo WndMain():End() EXIT PROCEDURE SAIR() DBCLOSEALL() RESALLFREE() FREERESOURCES() RETURN Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.