Como fechar caixa de diálogo apenas clicando no OK

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1064
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

Como fechar caixa de diálogo apenas clicando no OK

Mensagem por porter »

Olá pessoal,
Tenho aqui uma rotina para caixa de diálogo, ao clicar fora da caixa, a caixa fecha voltando para rotina anterior,
nessa rotina, foi criado um botão OK, como faço para essa caixa ser fechada, apenas se clicar nesse botão OK ?
Harbour 3.2.0dev - GTWVG
Obrigado.

Código: Selecionar todos

FUNCTION DynWinDialog()
   LOCAL hDlg, aDlg, nStyle, cDlgIcon, cDlgProc, lOnTop, hMenu
    aDlg := Wvt_MakeDlgTemplate( 1, 16, 18, 40, { 4, 5, 5, 4 },  VERSION() + " " + hb_gtInfo( HB_GTI_VERSION ) + HB_EOL() )
   
    nStyle := WS_CHILD + WS_VISIBLE + WS_TABSTOP + ES_AUTOVSCROLL + ES_MULTILINE + ES_WANTRETURN + WS_BORDER  + WS_VSCROLL
   
   aDlg   := Wvt_AddDlgItem( aDlg,  1, 2, 15, 35, {}, ID_MLE       , "EDIT"   , nStyle, /* cText, nHelpId, nExStyle */ )
   
   nStyle := WS_CHILD + WS_VISIBLE + SS_ICON //+ SS_CENTERIMAGE
   aDlg   := Wvt_AddDlgItem( aDlg, 18, 2, 2, 6, {}, ID_ICO_VOUCH  , "STATIC" , nStyle, "" )
  
// BOTAO OK
   nStyle :=            WS_VISIBLE + WS_TABSTOP + BS_PUSHBUTTON           
   aDlg   := Wvt_AddDlgItem( aDlg, 17, 20, 1,  8, { 2, 1, 1 , 0 }, ID_BTN_OK, "BUTTON" , nStyle, "OK" )   
   cDlgProc    := "DynDlgProc"

// Modeless Dialog
    hDlg := Wvt_CreateDialog( aDlg, lOnTop, cDlgProc, cDlgIcon, /*nTimerTicks*/, hMenu )
   
FUNCTION DynDlgProc( hDlg, nMsg, wParam, lParam )
   SWITCH nMsg
   // COR DA FONTE
   CASE WM_CTLCOLOREDIT
      IF Wvg_GetDlgItem( hDlg, ID_MLE ) == lParam
         Wvg_SetTextColor( wParam, RGB(0    ,0  , 0   ) )  // COR DA FONTE
         Wvg_SetBkColor  ( wParam, RGB( 255 ,178, 102 ) )  // COR DE FUNDO
         RETURN 1
      ENDIF
   CASE WM_INITDIALOG
      Wvg_SetDlgItemText( hDlg, ID_MLE, GetEditText() )

   CASE WM_DESTROY
      Wvg_GetDlgItemText( hDlg, ID_MLE )
   ENDSWITCH
Claudio Soto
Colaborador
Colaborador
Mensagens: 568
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

Como fechar caixa de diálogo apenas clicando no OK

Mensagem por Claudio Soto »

Nunca usé las gtxxx pero seria algo asi:

Wvg_DestroyWindow (hDlg)

Caso no este implementada la función DestroyWindow del api de Windows es muy fácil implementarlo desde C.
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20471
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 2 vezes

Como fechar caixa de diálogo apenas clicando no OK

Mensagem por JoséQuintas »

porter escreveu:nessa rotina, foi criado um botão OK, como faço para essa caixa ser fechada, apenas se clicar nesse botão OK ?Harbour 3.2.0dev - GTWVG
Segundo exemplo:

Código: Selecionar todos

   IF nInfo == 2
      // Modal Dialog
      hDlg := wvt_DialogBox( aDlg, @DynDlgProc(), hb_gtInfo( HB_GTI_WINHANDLE ) )
   ELSE
      // Modeless Dialog
      hDlg := wvt_CreateDialog( aDlg, lOnTop, @DynDlgProc(), cDlgIcon, nTimerTicks, hMenu )
   ENDIF
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (Linux/Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1064
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

Como fechar caixa de diálogo apenas clicando no OK

Mensagem por porter »

Obrigado Claudio Soto e JoseQuintas, agora deu certo.
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1064
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

Como fechar caixa de diálogo apenas clicando no OK

Mensagem por porter »

Quando executo a caixa de diálogo e fecho, em outras partes do sistema, quando teclo a letra "S" por exemplo em um Tbrowse,
está retornando 287, quando fechar, tenho que desabilitar algo ?

Código: Selecionar todos

IF LASTKEY() = 83  // Letra "S", está retornando 287
    .........
ENDIF
Responder