Mudar texto dos botoes da Wapi_MessageBox()

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

Moderador: Moderadores

Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Mudar texto dos botoes da Wapi_MessageBox()

Mensagem por rubens »

Olá Boa tarde...

Para uma confirmação com o Wapi_MessageBox() basta usar?

Código: Selecionar todos

wapi_MessageBox( wapi_GetActiveWindow(), cText, "Confirmação", WIN_MB_YESNO + WIN_MB_ICONQUESTION + WIN_MB_DEFBUTTON2 ) == IDYES
Tem como eu mudar o texto dos botões, SIM/NAO, para Impressora/Tela ?

Obrigado Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Mudar texto dos botoes da Wapi_MessageBox()

Mensagem por JoséQuintas »

Eu ficava imaginando como iria limpar minha aparelhagem de som... e não limpava....
Hoje veio a faxineira e limpou com esponja e sabão e ficou resolvido.

Caso não encontre outra opção:
vb1.png
Usei a IDE do VB6, pra não ter que procurar os #includes no Harbour, e já ver o que há disponível.
A IDE do VB6 mostra automático, conforme o que puder ser usado.
vb2.png
No caso do Harbour será procurar o #define equivalente.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, 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/
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

Mudar texto dos botoes da Wapi_MessageBox()

Mensagem por Claudio Soto »

Los botones de los MessageBox de Windows no se pueden cambiar, hay que utilizar los predefinidos.
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Mudar texto dos botoes da Wapi_MessageBox()

Mensagem por asimoes »

Rubens, seria algo como isso:
Screen Shot 04-14-17 at 07.52 PM.PNG
Screen Shot 04-14-17 at 07.52 PM.PNG (6.43 KiB) Exibido 2508 vezes
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Mudar texto dos botoes da Wapi_MessageBox()

Mensagem por asimoes »

O código que troca o texto padrão dos botões está na pasta \MiniGUI\SAMPLES\Advanced\MsgBtnEx

Eu não consegui foi passar o parâmetro com o nome dos textos Impressora e Tela, está informado na função CBTProc (código C )

Aqui troca os textos padrão do botões:


hwndButton = GetDlgItem(hwnd, IDYES);
SetWindowText(hwndButton, "Impressora");

hwndButton = GetDlgItem(hwnd, IDNO);
SetWindowText(hwndButton, "Tela");

Teria que ver uma forma de ser passado como parâmetro.

Código: Selecionar todos

/*
 * MINIGUI - Harbour Win32 GUI library
 *
 * Copyright 2002-05 Roberto Lopez <harbourminigui@gmail.com>
 * http://harbourminigui.googlepages.com/
 *
 * Copyright 2005 Grigory Filatov <gfilatov@inbox.ru>
*/

ANNOUNCE RDDSYS

#include "minigui.ch"
#include "hbwin.ch"

#define PROGRAM 'MsgBtnEx Demo'
#define VERSION ' version 1.0'
#define COPYRIGHT ' 2005 Grigory Filatov'

#define MB_OK                   0
#define MB_ICONSTOP             16
#define MB_ICONQUESTION         32
#define MB_ICONEXCLAMATION      48
#define MB_ICONINFORMATION      64
#define MB_ICONINFORMATION      64
*--------------------------------------------------------*
Function Main
*--------------------------------------------------------*

	DEFINE WINDOW Form_1 ;
		AT 0,0 ;
		WIDTH 640 HEIGHT 480 ;
		TITLE PROGRAM ;
		ICON 'DEMO.ICO' ;
		MAIN ;
		FONT 'Arial' SIZE 10 

		DEFINE STATUSBAR
			STATUSITEM '[x] Harbour Power Ready!' 
		END STATUSBAR

		DEFINE MAIN MENU 
			POPUP '&MsgBtnEx'
				ITEM 'Message Information'	ACTION	{|| MsgBtnEx(MiniguiVersion(), ;
				StrTran(Form_1.Title, "Demo", "Information"), MB_ICONINFORMATION + MB_OK), MsgInfo("Ok", "Information") }
				ITEM 'Message Question'		ACTION	{|| MsgBtnEx(MiniguiVersion(), ;
				StrTran(Form_1.Title, "Demo", "Question"), MB_ICONQUESTION + MB_OK) }
				ITEM 'Message Stop'		ACTION	MsgBtnEx(MiniguiVersion(), ;
					StrTran(Form_1.Title, "Demo", "Stop"), MB_ICONSTOP + MB_OK)
				ITEM 'Message Error'		ACTION	MsgBtnEx(MiniguiVersion(), ;
					StrTran(Form_1.Title, "Demo", "Error"), MB_ICONEXCLAMATION + MB_OK)
				ITEM 'Message Yes No'		ACTION	MsgBtnEx(MiniguiVersion(), ;
					StrTran(Form_1.Title, "Demo", "Impressora"), WIN_MB_YESNO + WIN_MB_ICONQUESTION + WIN_MB_DEFBUTTON2 )					
			    	SEPARATOR	
				ITEM '&Exit'	ACTION Form_1.Release
			END POPUP
			POPUP '&Help'
				ITEM '&About'	ACTION MsgBtnEx( PROGRAM + VERSION, ;
					'About', MB_ICONINFORMATION + MB_OK )
			END POPUP
		END MENU

	END WINDOW

	CENTER WINDOW Form_1

	ACTIVATE WINDOW Form_1

Return Nil


#pragma BEGINDUMP

#include <windows.h>
#include "hbapi.h"


HHOOK hMsgBoxHook;

LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam )
{
	HWND hwnd;
	HWND hwndButton;

	if(nCode < 0)
		return CallNextHookEx(hMsgBoxHook, nCode, wParam, lParam);

	switch(nCode)
	{
	case HCBT_ACTIVATE:

		// Get handle to the message box!
		hwnd = (HWND)wParam;

		hwndButton = GetDlgItem(hwnd, IDOK);
		SetWindowText(hwndButton, "Thank you");
		
		hwndButton = GetDlgItem(hwnd, IDYES);
		SetWindowText(hwndButton, "Impressora");

		hwndButton = GetDlgItem(hwnd, IDNO);
		SetWindowText(hwndButton, "Tela");

		return 0;

	}
          
	return CallNextHookEx(hMsgBoxHook, nCode, wParam, lParam);
}

int MsgBoxHook(HWND hwnd, const char *szText1, const char *szCaption, UINT uType)
{
	int retval;
	HWND hwndButton;

	// Install a window hook, so we can intercept the message-box
	// creation, and customize it
	hMsgBoxHook = SetWindowsHookEx(
		WH_CBT, 
		CBTProc, 
		NULL, 
		GetCurrentThreadId()			// Only install for THIS thread!!!
		);

	// Display a standard message box
	
	retval = MessageBox(hwnd, szText1, szCaption, uType);


	// remove the window hook
	UnhookWindowsHookEx(hMsgBoxHook);

	return retval;
}

HB_FUNC ( MSGBTNEX )
{
	MsgBoxHook(NULL, hb_parc(1), hb_parc(2), hb_parnl(3) );
}

#pragma ENDDUMP

►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Mudar texto dos botoes da Wapi_MessageBox()

Mensagem por asimoes »

Ops, foi mal, postei no fórum errado

Rubens se for algo relacionado a MiniGui tem um exemplo na pasta \MiniGUI\SAMPLES\BASIC\MsgEdit que atende o que você quer.
Esse código em C você pode usar mesmo que não seja com a minigui
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Mudar texto dos botoes da Wapi_MessageBox()

Mensagem por asimoes »

Off topic,

Aproveitando a ideia fiz no meu sistema, o texto da caixa pode ser qq um
Screen Shot 04-14-17 at 09.57 PM.PNG
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Mudar texto dos botoes da Wapi_MessageBox()

Mensagem por rubens »

ASimoes...

O Toledo tinha me apresentado algo parecido aqui nesse tópico: https://pctoledo.org/forum/viewto ... 45&t=17885
Só que é para Minigui...
Tô só passando um batom aqui no harbour (não estou querendo implementando mais nada em console, se for uma rotina maior, faço um exe externo, até tá tudo em janela na minigui). Daí uso do jeito que o Quintas falou associando uma opção ao SIM, NÃO e CANCELAR. Mas não fica lá muito chique... mas é remendo então vai ficando...

Obrigado
Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Mudar texto dos botoes da Wapi_MessageBox()

Mensagem por JoséQuintas »

Só pra lembrar: se não for GUI, pode ser mais interessante algo neste estilo:
selecao.png
O usuário pode clicar com mouse, usar setas, teclar letra, etc.
O mesmo clique que o usuário faria na seleção Windows, faria nesta.

Ou... misturar LIBs e usar a rotina postada em hwgui... rs

Aliás.... se tiver preview de impressão, basta sempre enviar pra tela, e o usuário decide depois se imprime, e o sim ou não acaba resolvendo.... rs
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, 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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Mudar texto dos botoes da Wapi_MessageBox()

Mensagem por JoséQuintas »

Minha opção matricial direciona a este preview.
Isso dipensa opção vídeo/impressora.
preview.png
Nesse preview funciona clique e até rodinha do mouse, melhor do que criar uma opção somente tela.
Pode ser visual texto, mas o usuário não sente falta do que uma GUI poderia oferecer - talvez o ZOOM, que ainda não tem.... rs

Mas nesse caso ele poderia usar a opção PDF, e abrir o leitor default, do Windows 10 por exemplo.
preview2.png
Isso de vídeo ou impressora acaba se tornando algo do passado.... rs
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, 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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Mudar texto dos botoes da Wapi_MessageBox()

Mensagem por JoséQuintas »

Só complemento:
Se você tem uma rotina pra vídeo, e outra pra impressora, desse jeito elimina a de vídeo, e tem menos trabalho pra manutenção depois.
É apenas sugestão.
Tinha isso num aplicativo que venho alterando, e era complicado mexer em duas rotinas pra poder ter vídeo e impressora.

E quando alterar pra LIB gráfica, vai ser só trocar o módulo de preview.

Pode ser até mais fácil do que encontrar a solução pra mensagem.
A mensagem vira problema do passado, e vai estar trabalhando para o futuro.

É assim que eu faço, por isso não me preocupo tanto com GUI, por exemplo basta uma única rotina de preview pra alterar todo aplicativo de uma vez.
É como se o aplicativo estivesse sempre pronto pra GUI, só esperando a escolha de qual GUI usar...
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, 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/
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Mudar texto dos botoes da Wapi_MessageBox()

Mensagem por asimoes »

Os relatórios dos meus sistemas são sempre exibidos em tela, se o o usuário quer imprimir, tem um botão no preview pra isso.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Mudar texto dos botoes da Wapi_MessageBox()

Mensagem por rubens »

Boa tarde...

Quintas, viu essa postagem https://pctoledo.org/forum/viewto ... =4&t=18184?

Com pequenas adaptações nos relatórios, hoje não me preocupo mais com relatório em matricial e Laser/Jato/Tinta.
Relatorio2.png
Neste exemplo aí se a impressora não é matricial já gera o pdf e com um flag de visualizar na tela ou não, com o sumatra exibo o relatório (pdf) na tela. Usando os mesmo fonte nos relatórios. Com todas as características de um PDF e usando a formatação normal de um relatório Matricial com negrito, expandido e condensado. Ainda tenho que clientes que só usam matricial e tenho clientes e que só usam laser/jato e tenho clientes que usam os dois modelos... E relatórios novos estou migrando tudo para FastReports..
FastReport.png
A questão é que no sistema troquei o comando Alert pelo Wapi_Message, já fica com uma cara mais "moderna"...
Tela com Wapi_Message.png
O Negócio é que em todos os meu relatórios Tem a opção de imprimir direto na impressora ou visualizar em tela e ainda o próprio sistema escolhe se a impressão direta vai ser via PrintFileRaw o via Harupdf (Só depende da impressora escolhida). Uso uma tela padrão para isso e nela tem três opções como na figura abaixo:
TelaMudar.png
Daí hoje não vejo mais a necessidade de saída de Arquivo, porque quando visualiza já foi gerado o pdf. Daí gostaria só de uma Wapi_message box com botôes Impressora - Tela. Mas se não é possível... vai ficar do jeito que tá..

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Responder