Página 3 de 4
MsgYesNo: Tem como descentralizar ?
Enviado: 08 Dez 2015 13:33
por asimoes
A linha 121 está errada no seu hbp
O hbmk2 é executado fora:
ex.:
Criar a bat cl.bat colocar na bat:
hbmk2 SICCA35gt.hbp
Obs.: Este tópico está está saindo e misturando o assunto principal. O ideal é abrir um novo tópico para tirar suas duvidas.
MsgYesNo: Tem como descentralizar ?
Enviado: 08 Dez 2015 14:27
por microvolution
ok, V.Sa. tem razão...
quanto ao assunto que JQuintas começou a abordar
asimoes escreveu:Obs.: Este tópico está está saindo e misturando o assunto principal. O ideal é abrir um novo tópico para tirar suas duvidas.
transferi as minhas dúvidas para o tópico já existente que é de título USAR GTWVG (de autoria do próprio JQuintas).
O link para todos me ajudarem a entender o que o JQuintas passou é:
https://pctoledo.org/forum/viewto ... =4&t=13221
E aqui, vou continuar com as dúvidas ao MSGYESNO... que por enquanto (já havia dito anteriormente) está começando a dar o resultado que esperava, sem a necessidade de mais nada a não ser MSGYESNO ('texto da mensagem','título da janela')...
ABRAÇOS!
MsgYesNo: Tem como descentralizar ?
Enviado: 17 Jan 2016 15:50
por microvolution
olá pessoal,
nóisAkiTravies:
assimoes escreveu: escreveu:Uma outra forma de exibir caixa de diálogo usando api do windows.
Bom, estou usando as mensagens que o prezado professor
asimoes ensinou, que são as do exemplo por ele postado aqui neste tópico.
Mas, uma dúvida tenho, com "usuários leigos" do aplicativo final:
Assim que necessário no meu e também no sistema de todos, colocamos na tela mensagens para o usuário responder com "SIM/OK", NÃO/CANCEL,e etc...
No nosso antigo clipper essas mensagens estavam grudadas (como um formulário modal) na tela onde apareciam, e, o usuário se abrisse o WinWord e voltasse no sistema estavam lá:
- A tela do cadastro onde parou; e
- A Mensagem aguardando ser respondida.
Acontece que com este tipo de mensagem se o usuário fizer o mesmo procedimento (abrir o Word... etc...) ao voltar para o sistema a mensagem não está grudada ao aplicativo. Ela na verdade está aberta como uma nova seção lá em baixo na barra de ferramentas o usuário descobre-a e clica para responder ao questionamento.
Aí que é o "pobrema"; para nós (bons ou maus programadores) isso é fácil, mas, para o usuário, eles se perdem todo.
Então, existe uma forma da mensagem ser "tipo modal", onde, se o usuário mudar para o "Excel" e voltar ao sistema a tela em que ele parou e sua mensagem ficam juntos?
Não sei se compliquei ou se expliquei,
... mas é essa aí minha dúvida, pois tanto na HMG quanto agora na GTWVG percebo que são o mesmo problema!!!!
MsgYesNo: Tem como descentralizar ?
Enviado: 28 Jan 2016 22:15
por Claudio Soto
Hola a todos, en HMG oficial hace un tiempo que existe:
SET DIALOGBOX POSITION
Sets the Position of the Dialog Boxes in the Screen
(FindTextDialog, GetColor, GetFile, GetFolder, GetFont, MessageBoxTimeout, MsgXXX, PutFile, ReplaceTextDialog, SELECT PRINTER, etc.)
Syntax:
SET DIALOGBOX [ POSITION ] ROW <nRow>|<CodeBlockRow>|<NIL> COL <nCol>|<CodeBlockCol>|<NIL>
SET DIALOGBOX [ POSITION ] CENTER OF PARENT
SET DIALOGBOX [ POSITION ] CENTER OF <hWnd>
SET DIALOGBOX [ POSITION ] CENTER OF DESKTOP
SET DIALOGBOX [ POSITION ] DISABLE
Código: Selecionar todos
#include "hmg.ch"
FUNCTION Main()
DEFINE WINDOW Form_1 ;
AT 0,0 ;
WIDTH 300 ;
HEIGHT 200 ;
MAIN;
TITLE "Move This Window"
@ 50,100 BUTTON Button_1 CAPTION "Click Here" ACTION MsgInfo ("Hello")
// These CodeBlock puts the dialog box always in the same Row and Col of Form_1
cbRow1 := {|| Form_1.Row }
cbCol1 := {|| Form_1.Col }
// These CodeBlock puts the dialog box always in the same Row and Col of Button_1
cbRow2 := {|| ClientToScreenRow ( Form_1.HANDLE , Form_1.Button_1.Row ) }
cbCol2 := {|| ClientToScreenCol ( Form_1.HANDLE , Form_1.Button_1.Col ) }
SET DIALOGBOX ROW cbRow2 COL cbCol2
END WINDOW
CENTER WINDOW Form_1
ACTIVATE WINDOW Form_1
RETURN NIL
MsgYesNo: Tem como descentralizar ?
Enviado: 30 Jun 2016 23:38
por lugab
Ola amigos...
Aproveito a similaridade do tópíco pra perguntar 2 coisas:
1) tem como mudar o Foco de MsgYesNo() para "Yes" ? Do jeito como foi desenvolvida, o default da Função é "No"
Código: Selecionar todos
#define IDYES 6
#define WIN_MB_YESNO 0x00000004
#define WIN_MB_DEFBUTTON2 0x00000100
#define WIN_MB_ICONQUESTION 0x00000020
FUNCTION MsgYesNo( cText )
LOCAL lValue
lValue := wapi_MessageBox( wapi_GetActiveWindow(), cText, "Confirmação", WIN_MB_YESNO + WIN_MB_ICONQUESTION + WIN_MB_DEFBUTTON2 ) == IDYES
RETURN lValue
2) Tem como Acrescentar um Temporizador em algumas das Funções abaixo , tipo sair da Msg depois de N segundos?
Código: Selecionar todos
FUNCTION MsgExclamation( cText )
wapi_MessageBox( wapi_GetActiveWindow(), cText, "Atencao", WIN_MB_ICONASTERISK )
RETURN NIL
FUNCTION MsgWarning( cText )
wapi_MessageBox( wapi_GetActiveWindow(), cText, "Atencao", WIN_MB_ICONEXCLAMATION )
RETURN NIL
FUNCTION MsgStop( cText )
wapi_MessageBox( wapi_GetActiveWindow(), cText, "Atencao", WIN_MB_ICONHAND )
RETURN NIL
Grato....
MsgYesNo: Tem como descentralizar ?
Enviado: 01 Jul 2016 07:26
por asimoes
Exemplo de mensagem com timeout
Código: Selecionar todos
MensagemTimeOut("É obrigatório informar o motivo para sócios que entram na classe 10!"+hb_EOL()+;
"Os sócios que entram na classe 10 são excluídos de algumas rotinas por ex.:"+hb_EOL()+hb_EOL()+;
"Emissão de boletos."+hb_EOL()+;
"Emissão de etiquetas."+hb_EOL()+;
"Relatório de inadimplentes.", "Atenção", 30000, 2)
FUNCTION MensagemTimeOut( cMensagem, cTitulo, nTempo, nTipo )
LOCAL nTypeButton
cMensagem := hb_DefaultValue(cMensagem, "")
cTitulo := hb_DefaultValue(cTitulo, "Atenção")
nTempo := hb_DefaultValue(nTempo, 10000)
nTipo := hb_DefaultValue(nTipo, 1)
SWITCH nTipo
CASE 1
nTypeButton := MB_OK + MB_SYSTEMMODAL + MB_ICONASTERISK //Exclamação
Exit
CASE 2
nTypeButton := MB_OKCANCEL + MB_SYSTEMMODAL + MB_DEFBUTTON2 + MB_ICONASTERISK //Pergunta
Exit
END SWITCH
nRet := HWG_MessageBoxTimeout(cMensagem, cTitulo, nTypeButton, nTempo)
RETURN nRet
#pragma BEGINDUMP
#include "windows.h"
#include "hbapi.h"
#include "time.h"
#include "olectl.h"
int WINAPI MessageBoxTimeout(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType, WORD wLanguageId, DWORD dwMilliseconds)
{
typedef BOOL (WINAPI *PMessageBoxTimeout)(HWND,LPCTSTR,LPCTSTR,UINT,WORD,DWORD);
static PMessageBoxTimeout pMessageBoxTimeout = NULL;
if (pMessageBoxTimeout == NULL)
{
HMODULE hLib = LoadLibrary ("User32.dll");
#ifdef UNICODE
pMessageBoxTimeout = (PMessageBoxTimeout)GetProcAddress(hLib, "MessageBoxTimeoutW");
#else
pMessageBoxTimeout = (PMessageBoxTimeout)GetProcAddress(hLib, "MessageBoxTimeoutA");
#endif
}
if(pMessageBoxTimeout == NULL)
return FALSE;
return pMessageBoxTimeout(hWnd, lpText, lpCaption, uType, wLanguageId, dwMilliseconds);
}
// HMG_MessageBoxTimeout (Text, Caption, nTypeButton, nMilliseconds) ---> Return iRetButton
HB_FUNC (HWG_MESSAGEBOXTIMEOUT)
{
HWND hWnd = GetActiveWindow();
TCHAR *lpText = hb_parc (1);
TCHAR *lpCaption = hb_parc (2);
UINT uType = HB_ISNIL(3) ? MB_OK : (UINT) hb_parnl (3);
WORD wLanguageId = MAKELANGID (LANG_NEUTRAL, SUBLANG_NEUTRAL);
DWORD dwMilliseconds = HB_ISNIL(4) ? (DWORD)0xFFFFFFFF : (DWORD) hb_parnl (4);
int iRet = MessageBoxTimeout (hWnd, lpText, lpCaption, uType, wLanguageId, dwMilliseconds);
hb_retni ((int) iRet);
}
#pragma ENDDUMP
MsgYesNo: Tem como descentralizar ?
Enviado: 01 Jul 2016 07:35
por asimoes
Botão default:
#include "hbdyn.ch"
#define MB_DEFBUTTON2 0x00000100
#define MB_DEFBUTTON3 0x00000200
#define MB_DEFBUTTON4 0x00000300
Ex.:
Código: Selecionar todos
nEscolha:=hb_dynCall( { "MessageBoxA", "user32.dll",HB_DYN_CALLCONV_STDCALL},0,cMensagem, "Aviso do Sistema",hb_bitOr( MB_YESNO, MB_ICONASTERISK, MB_DEFBUTTON2 ))
IF nEscolha = 6
nEscolha:=1
ELSEIF nEscolha = 7
nEscolha:=2
ENDIF
MsgYesNo: Tem como descentralizar ?
Enviado: 01 Jul 2016 22:40
por JoséQuintas
O que há contra isto?
Código: Selecionar todos
FUNCTION Main()
SetMode(25,80)
CLS
CallDll( "MessageBoxTimeoutA", "user32.dll", wapi_GetActiveWindow(), "Hi", "Yes Or No", MB_YESNO + MB_DEFBUTTON2, 0, 6000 )
Inkey(0)
RETURN NIL

- timeout.png (12.79 KiB) Exibido 5132 vezes
MsgYesNo: Tem como descentralizar ?
Enviado: 02 Jul 2016 03:44
por lugab
Obrigado, pessoal...
Asimoes,
No código por vc postado não consta a definição de
e aí da erro na compilção..
José Quintas,
Eu compilei e não deu erro, entretanto, na execução não exibiu mensagem nenhuma, apenas contou os 2 segundos do inkey() e prosseguiu
Código: Selecionar todos
#define MB_YESNO 0x00000004
#define MB_DEFBUTTON2 0x00000100
CallDll( "MessageBoxTimeoutA", "user32.dll", wapi_GetActiveWindow(), "Testando Quintas", "Yes Or No", MB_YESNO + MB_DEFBUTTON2, 0, 6000 )
Inkey(2)
Ps: Eu uso o Hb3.0 e Windows 7
MsgYesNo: Tem como descentralizar ?
Enviado: 02 Jul 2016 07:23
por asimoes
LugaB
use DEFAULT
cMensagem := hb_DefaultValue(cMensagem, "")
cTitulo := hb_DefaultValue(cTitulo, "Atenção")
nTempo := hb_DefaultValue(nTempo, 10000)
nTipo := hb_DefaultValue(nTipo, 1)
default cMensagem to "",;
cTitulo to "Atenção",;
nTempo to 10000,;
nTipo to 1
Não esqueça de incluir "common.ch"
MsgYesNo: Tem como descentralizar ?
Enviado: 02 Jul 2016 08:12
por JoséQuintas
No Harbour 3.2 chama-se CallDll32(), no 3.0 deve ser igual.
Existe outra CallDll() mas é pra compatibilidade xHarbour, é a que deve ter sido linqueditada, e por isso não deu erro.
No Harbour 3.4 CallDll32() foi renomeada pra CallDll().
MsgYesNo: Tem como descentralizar ?
Enviado: 23 Jul 2016 11:40
por rubens
Bom dia...
Como eu faço para sair do wapi_MessageBox() pressionando o esc?
Tenho a funcao
Código: Selecionar todos
FUNCTION PERG(cTexto)
LOCAL nSimNao := 1
LOCAL lValue
lValue := wapi_MessageBox( wapi_GetActiveWindow(), cTexto, "Confirmacao", WIN_MB_YESNO + WIN_MB_ICONQUESTION + WIN_MB_DEFBUTTON1 ) == IDYES
nSimNao := If( lValue,1,2 )
RETURN IF(nSimNao=1,"S","N")
Só que quando ela é chamada não sai pressionando ESC. Tem alqum parametro que possa ser enviado para sair pressionando esc?
Obrigado
Rubens
MsgYesNo: Tem como descentralizar ?
Enviado: 23 Jul 2016 11:55
por Toledo
Rubens, acho que o ESC só vai funcionar se tiver o botão CANCELA, então faz um teste, troque WIN_MB_YESNO por WIN_MB_YESNOCANCEL.
Abraços,
MsgYesNo: Tem como descentralizar ?
Enviado: 23 Jul 2016 18:09
por rubens
Obrigado Toledo...
Funcionou certinho...
Rubens
MsgYesNo: Tem como descentralizar ?
Enviado: 08 Nov 2023 10:48
por deividdjs
bom dia amigos ....
estou usando as funções abaixo e sempre tenho problema com variaveis .. alguem sabe me dizer onde está o problema ??
Código: Selecionar todos
FUNCTION MsgYesNo( cText )
LOCAL lValue
lValue := wapi_MessageBox( wvgSetAppWindow():hWnd, cText, "Confirma?", WIN_MB_YESNO + WIN_MB_ICONQUESTION + WIN_MB_DEFBUTTON2 ) == WIN_IDYES
RETURN lValue
FUNCTION MsgExclamation( cText )
wapi_MessageBox( wvgSetAppWindow():hWnd, cText, "Atenci¢n!", WIN_MB_ICONASTERISK )
RETURN NIL
FUNCTION MsgWarning( cText )
wapi_MessageBox( wvgSetAppWindow():hWnd, cText, "Atenci¢n!", WIN_MB_ICONEXCLAMATION )
RETURN NIL
FUNCTION MsgStop( cText )
wapi_MessageBox( wvgSetAppWindow():hWnd, cText, "Atenci¢n!", WIN_MB_ICONHAND )
RETURN NIL
Abraços!