MSGBOX COM TEXTO COLORIDO OU NEGRITO
Como consigo colocar uma palavra do MSGBOX [txt-color=#3333ff]colorido [/txt-color]ou negrito ?
Não tem como fazer isso usando o msgbox, a sua opção é criar um form com as mesma dimenções do tela do msgbox e colocar a foto, simplificando deixar o msgbox ai vc escolhe a fonte que quiser.
Que eu saiba não é possóvel mudar as cores de um msgbox pois podemos ver que nem nas mensagens do windows isso ocorre! Para isto você terá que montar sua própria caixa de mensagem com um form.
Lamento, não existem parâmetros na função e nem no método MSGBOX que permitam tal edição.
Será necessário mesmo programação para conseguir este efeito, talvez haja algum exemplo no site embora eu nunca tenha visto.
Mas convenhamos, não será o fim do mundo fazer um programa destes.
No que contribuà? Ajudei que vc não precisa mais ficar esperando aparecer ou ficar procurando o que não existe.
Será necessário mesmo programação para conseguir este efeito, talvez haja algum exemplo no site embora eu nunca tenha visto.
Mas convenhamos, não será o fim do mundo fazer um programa destes.
No que contribuà? Ajudei que vc não precisa mais ficar esperando aparecer ou ficar procurando o que não existe.
Paty, Essa ocx é uma Msgbox configurável, você pode mudar a cor do texto, dos botões E PRINCIPALMENTE A COR DO FUNDO. A mensagem é sempre negrito(Eu posso colocar isso como opção na próxima versão. Usa uma sitaxe semenhante àMsgbox do Windows.Agora colocar apenas uma palavra em negrito ou colorido não dá. pode conseguir isso com a mensagem inteira.
Caixa Msgbox Personalizada. Pega e confira.
Caixa Msgbox Personalizada. Pega e confira.
Anja, é impossivel.
A Msgbox não passa de uma chamada a uma API do Windows feita pelo próprio VB. Ela não é configuravel.
A sugestão seria usar essa OCX do Roberto Martins e transformar a label que ele usa para o texto em um RichTextBox, assim, vc poderia mudar o texto conforme a sua necessidade.
Fora isso, não existe outra forma, senão um formulario pra isso.
A Msgbox não passa de uma chamada a uma API do Windows feita pelo próprio VB. Ela não é configuravel.
A sugestão seria usar essa OCX do Roberto Martins e transformar a label que ele usa para o texto em um RichTextBox, assim, vc poderia mudar o texto conforme a sua necessidade.
Fora isso, não existe outra forma, senão um formulario pra isso.
Veja bem, eu e o Lion afirmamos que msgbox não tem esta parametrização ... não que ninguém tenha criado uma OCX com esta funcionalidade.
Não precisa procurar mais na MsgBox eu quis dizer, quanto a outra OCX eu desconheço, isto não significa que não exista ... mas termino do mesmo jeito que no outro post.
Não será o fim do mundo criar uma função que faça isto.
Não precisa procurar mais na MsgBox eu quis dizer, quanto a outra OCX eu desconheço, isto não significa que não exista ... mas termino do mesmo jeito que no outro post.
Não será o fim do mundo criar uma função que faça isto.
Você pode instalar um Hook na aplicação para saber quando uma MsgBox for criada. A partir daàvocê pode obter os controles posicionados nela e fazer qualquer alteração tal como enviar uma mensagem WM_SETFONT para alterar a fonte do Label que exibe a mensagem, ou fazer subclassing dele para modificar partes dos texto quando ele for desenhado. No link abaixo existe um exemplo em VB.NET, dê uma olhada como funciona a técnica e os termos usados pelo autor para poder procurar e encontrar um exemplo para VB6.
http://msdn.microsoft.com/msdnmag/issues/02/11/CuttingEdge/
http://msdn.microsoft.com/msdnmag/issues/02/11/CuttingEdge/
Pra facilitar um pouco seu trabalho, no link abaixo tem um exemplo de como criar um Hook no VB6 justamente para mecher no MsgBox, daàvocê pode usar a API GetDlgItem para obter o handle do Label na MsgBox e enviar para ele a mensagem WM_SETFONT usando a API SendMessage para alterar a fonte quando a janela for criada.
http://vbnet.mvps.org/index.html?code/hooks/messageboxhookcentre.htm
http://vbnet.mvps.org/index.html?code/hooks/messageboxhookcentre.htm
Patricia, até onde eu conheço, o que vc vai conseguir é mudar (tipo da fonte, negrito, italico, sublinhado, tracado) com trabalho de API.
mas veja este exemplo em anexo. talvez te agrade.
mas veja este exemplo em anexo. talvez te agrade.
Preparei o código para exibir a mensagem em negrito.
Num módulo:
Para utilizar:
Se quiser alterar a cor do texto, será necessário fazer subclassing da MsgBox e processar a mensagem WM_CTLCOLORSTATIC retornando o handle para um Brush que definirá a cor do texto.
Num módulo:
Option Explicit
Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long
Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Private Declare Function GetDlgItem Lib "user32" (ByVal hDlg As Long, ByVal nIDDlgItem As Long) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hWnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long
Private Declare Function CreateFontIndirect Lib "gdi32" Alias "CreateFontIndirectA" (lpLogFont As LOGFONT) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const WH_CBT = 5
Private Const HCBT_CREATEWND = 3
Private Const HCBT_ACTIVATE = 5
Private Const FW_BOLD = 700
Private Const LF_FACESIZE = 32
Private Const WM_SETFONT = &H30
Private Const WM_GETFONT = &H31
Private hHook As Long
Private Type LOGFONT
lfHeight As Long
lfWidth As Long
lfEscapement As Long
lfOrientation As Long
lfWeight As Long
lfItalic As Byte
lfUnderline As Byte
lfStrikeOut As Byte
lfCharSet As Byte
lfOutPrecision As Byte
lfClipPrecision As Byte
lfQuality As Byte
lfPitchAndFamily As Byte
lfFaceName(LF_FACESIZE) As Byte
End Type
Private Function MsgBoxHookProc(ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If uMsg < 0 Then
MsgBoxHookProc = CallNextHookEx(hHook, uMsg, wParam, lParam)
End If
Dim windowHandle As Long
windowHandle = wParam
Dim RetVal As Long, lpClassName As String
lpClassName = Space(256)
RetVal = GetClassName(windowHandle, lpClassName, 256)
lpClassName = Left(lpClassName, RetVal)
'Verifica se uma janela está sendo ativada e se é uma caixa de diálogo
If uMsg = HCBT_ACTIVATE And lpClassName = "#32770" Then
'Obtém o handle do Label na MsgBox
Dim labelHandle As Long
labelHandle = GetDlgItem(windowHandle, 65535)
'Verifica se o Label foi encontrado
If labelHandle Then
'Altera o estilo da fonte
Dim LF As LOGFONT
Dim hCurrFont As Long
Dim hHeaderFont As Long
hCurrFont = SendMessage(labelHandle, WM_GETFONT, 0, ByVal 0)
If GetObject(hCurrFont, Len(LF), LF) > 0 Then
LF.lfWeight = FW_BOLD
hHeaderFont = CreateFontIndirect(LF)
SendMessage labelHandle, WM_SETFONT, hHeaderFont, ByVal True
End If
End If
End If
MsgBoxHookProc = CallNextHookEx(hHook, uMsg, wParam, lParam)
End Function
Public Sub InitializeHook()
hHook = SetWindowsHookEx(WH_CBT, AddressOf MsgBoxHookProc, 0, GetCurrentThreadId())
End Sub
Public Sub TerminateHook()
UnhookWindowsHookEx hHook
End Sub
Para utilizar:
InitializeHook
MsgBox "Mensagem linha1" & vbCrLf & "Mensagem linha 2", vbYesNo
TerminateHook
Se quiser alterar a cor do texto, será necessário fazer subclassing da MsgBox e processar a mensagem WM_CTLCOLORSTATIC retornando o handle para um Brush que definirá a cor do texto.
Tópico encerrado , respostas não são mais permitidas