MessageBoxIndirectW

Status
Niet open voor verdere reacties.

mcs51mc

Gebruiker
Lid geworden
19 feb 2008
Berichten
386
Beste forumleden,

Iemand van jullie de functie in de titel (MessageBoxIndirectW) ooit gebruikt?
Ik lees van alles en nog wat op het net rond die functie maar kan maar geen werkend voorbeeld vinden voor een Excel applicatie. Ik wens Chinese karakters in een message box te zetten, niet enkel in de prompt maar ook de titel van de message box. Volgens wat ik begrepen heb staat de W achteraan de functie voor "Wide" oftewel Unicode.

Iemand dit ooit aan de praat gekregen?

Alvast bedankt!
Vriendelijke groeten
 
na wat puzzelwerk op het internet werkt dit bij mij

in Module1
Code:
Option Explicit

Private Const MB_USERICON = &H80&

Private Type MsgBoxParams
    cbSize As Long
    hWndOwner As Long
    hInstance As Long
    lpszText As Long
    lpszCaption As Long
    dwStyle As Long
    lpszIcon As Long
    dwContextHelpId As Long
    lpfnMsgBoxCallback As Long
    dwLanguageId As Long
End Type

Private Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long
Private Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function MessageBoxIndirectW Lib "user32" (lpMsgBoxParams As MsgBoxParams) As Long

Public Function MsgBoxVBAUnicode(ByVal Prompt As String, Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly, Optional ByVal Title As String, Optional ByVal ResourceIcon As String, Optional ByVal hWndOwner As Long) As VbMsgBoxResult
    'source: http://www.vbforums.com/showthread.php?541220-VB6-UniMsgBox-Unicode-message-box-class
    'source: http://www.experts-exchange.com/Programming/Languages/Visual_Basic/Q_10156200.html
    Dim udtMsgBox As MsgBoxParams
        ' if no owner is specified, try to use the active form
        If hWndOwner = 0 Then 'am_2013
            GetWindowDC (hWndOwner)
        End If
        With udtMsgBox
            .cbSize = Len(udtMsgBox)
            ' important to set owner to get behavior similar to the native MsgBox
            .hWndOwner = hWndOwner
            .hInstance = GetModuleHandle(&H0)
            ' set the message
            .lpszText = StrPtr(Prompt)
            ' if no title is given, use the application title like the native MsgBox
            If LenB(Title) = 0 Then
                Title = Application.Name
            End If
            .lpszCaption = StrPtr(Title)
            ' thought this would be a nice feature addition
            If LenB(ResourceIcon) = 0& Then
                .dwStyle = Buttons
            Else
                .dwStyle = (Buttons Or MB_USERICON) And Not (&H70&)
                .lpszIcon = StrPtr(ResourceIcon)
            End If
        End With
        ' show the message box
        MsgBoxVBAUnicode = MessageBoxIndirectW(udtMsgBox)
End Function
 

Bijlagen

deze vraag is ook hier gesteld
 
alphamax, Bedankt voor de code maar bij mij werkt dat niet :(
Ik heb je bestand iets bijgewerkt, userform met 2 knoppen en 2 labels.
Zoals je kan zien in bijgesloten screenshot, kan ik wel Chinese karakters in labels en op knoppen zetten maar niet in een message box, noch in de standaard, noch met jouw code.
De teksten in de labels zijn de teksten van de message box, dus mijn PC kan ze wel degelijk tonen maar niet in een message box :evil:

Enig idee ?!?

Bekijk bijlage Test_Messagebox.xls
Scherm.jpg
 
mijn code is gemaakt met windows7en en office2007nl
afgaande op de screenshot, werk jij met de mac?
 
@mcs51mc Wel zo netjes om even te vermelden dat je op meerdere fora je vraag heb gesteld. Meerdere helpers zijn op verschillende fora actief dat betekent dat je ze twee keer aan het werk zet voor jouw probleem.
 
Laatst bewerkt:
het is niet mijn vraag, het is de vraag van mcs51mc
 
Maar natuurlijk, excuses.
 
bestand uit bericht#2 werkt ook in windowsXPnl met office2003nl
blijkbaar zit het in office2010
volgens het internet is het aanpassen van de caption (title-bar) van de userform (font en/of tekenset en/of speciale tekens), zeer moeilijk
er zijn wel mogelijkheden om een userform te maken zonder caption/title-bar
je moet dan wel de opmaak van je userform aanpassen
maar dan ben je ook een deel van je probleem kwijt
ik wou het hier even bij laten, misschien dat een echte/gestudeerde expert meer weet
 
Alvast bedankt om het even uit te proberen met andere versie van Office!
Wanneer ik iets verneem via Mr.Excel dan laat ik het hier zeker weten.
Echter ik verwacht er niet veel van omdat die post daar al op page 3 staat na zo'n kleine 8 uren.
Wie gaat dat nog lezen ?!?
 
ik heb nog een oplossing, ik zal hem morgen nog eens testen en plaatsen
 
Hallo alphamax, Ik heb zowel jouw code als dat die te vinden is op de Mr.Excel site vandaag geprobeerd op mijn werk en daar werken ze alle twee. Waarom het dus maar niet wil lukken op mijn privé PC is een raadsel ?!?
Vooral wanneer je weet dat beide PC's dezelfde OS draaien en Office versie.
Enfin, het is belangrijker dat het werkt op "company PC's" dan op mijn privé PC.

Nogmaals dank voor de help!

Vriendelijke groeten
 
heb je ook dan een userform met chinees in de titlebar???
 
Ja, zowel tekst als titlebar zijn Chinese karakters.
 
Laatst bewerkt door een moderator:
kan je die dan uploaden, ben benieuwd
de userform is de form in jouw voorbeeldje met 2 buttons, en dus niet de messagebox
 
Oeps, heb te snel gelezen :(
De titlebar van de MsgBox heeft Chinese karakters, niet de userform!
Dat is (voorlopig nog) geen vereiste.
Had dat even overlezen in je vorige post.

Maar als je wil maak ik daar wel een nieuwe draad van :D
 
daar had ik in de tussentijd ook een oplossing voor gevonden
 
Bedoel je Cinese karakters in titlebar van een userform?
Is dat dan ook een of andere functie met een "W" achteraan?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan