Archive for category Uncategorized
Criando uma caixa de mensagem com a API do Windows em NetExpress 3.1
Posted by LeX in API, Dicas, Net Express 3.1, Uncategorized on June 5th, 2009

Quem usa DialogSystem já se acostumou a criar as caixas de mensagens e chamar direto pelo próprio Dialog. Já tinha visto alguns exemplos de criação das MessageBoxes dinamicamente, mas sempre achei trabalhoso demais.
Não faz muito tempo, comecei um projeto novo, que iria utilizar muitas dessas caixas, tanto de questionamento quanto de avisos para o usuário, resolvi então pesquisar um pouco mais sobre o assunto e colocá-lo em prática.
A idéia era simples: Criar uma classe para tratar essas mensagens, que deixasse a chamada do método mais simples possível.
E não é que deu certo ?
Agora para chamar uma MessageBox só preciso disso:
invoke wsrMsg "Question" using z"Confirma exclusão ?" returning wsResult
e para avisos, ainda mais simples:
invoke wsrMsg "Warning" using z"Data inválida"
Então vamos lá, o que é preciso para que você possa cria a sua classe também.
- No inicio do programa, declare o windows.cpy.
- Em special-names: call-convention 66 is WAPI.
E enfim, o método:
*>================================================================ *> Mensagem Sim / Não *>================================================================ method-id. "Question". local-storage section. 77 lsHwnd pic 9(09) comp-5. 77 lsMsg pic x(255). 77 lsCaption pic x(255). 77 lsuType UINT. 77 lsResult LRESULT. linkage section. 77 lnkMsg pic x(255). 77 lnkResult pic 9(09) comp-5. procedure division using lnkMsg returning lnkResult. // Pega o handle da janela que estiver ativa call WAPI "GetActiveWindow" returning lsHwnd // Move o texto e o título da janela move lnkMsg to lsMSG move z"Atenção !" to lsCaption // Seleciona o tipo de icone que irá aparecer move MB-ICONQUESTION to lsuType // Seleciona quais botões deverão aparecer add MB-YESNO to lsuType // Chamando a API call wapi MessageBoxA using by value lsHwnd by reference lsMSG by reference lsCaption by value lsuType returning lsResult move lsResult to lnkResult exit method end method "Question".
Já tem aí uma receita de bolo bacana pra quem quer começar. Agradecimentos especiais ao Grande Mestre Jedi Alexandre Cortez.
Enjoy..
