Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   BCB: MessageBox läßt sich nicht mit WideStrings füttern (https://www.delphipraxis.net/72780-bcb-messagebox-laesst-sich-nicht-mit-widestrings-fuettern.html)

messie 6. Jul 2006 16:40


BCB: MessageBox läßt sich nicht mit WideStrings füttern
 
Hallo,

vielleicht liegt es auch an der Hitze aber ich bekomme keine brauchbare Umwandlung eines WideStrings für die Messagebox hin
Code:
WideString AusgabeText

if (Application->MessageBoxA(AusgabeText, "", MB_YESNO) == 6)
{
  machwas...
}
Muß doch gehen, zumal Windows selbst das seit XP ja kann. Da steht doch ein API-Befehl hinter..

Grüße, Messie

xaromz 6. Jul 2006 17:13

Re: BCB: MessageBox läßt sich nicht mit WideStrings füttern
 
Hallo,

Wie wäre es, MessageBoxW zu verwenden? Das ist nämlich die WideString-Variante.
Oder gibt's das in Deinem BCB nicht?

Gruß
xaromz

messie 6. Jul 2006 17:33

Re: BCB: MessageBox läßt sich nicht mit WideStrings füttern
 
Zitat:

Zitat von xaromz
Wie wäre es, MessageBoxW zu verwenden?

gibt es, ist aber nicht dokumentiert. Aber die Widestrings schluckt das Ding auch nicht, interessanterweise für den anzuzeigenden Text, nicht aber für die Caption
Delphi-Quellcode:
WideString s;

  if (MessageBoxW(s,s, MB_YESNO) == 6)
  {
    //Anweisung
  }
wird angemeckert mit
Zitat:

E2342 Type mismatch in parameter 'lpCaption' (wanted 'const wchar_t *', got 'long')
Das kann ich mir nicht erklären (vielleicht doch die Hitze)

Grüße, Messie

Luckie 6. Jul 2006 22:45

Re: BCB: MessageBox läßt sich nicht mit WideStrings füttern
 
In Delphi:
Delphi-Quellcode:
var
  ws: WideString;
begin
  ws := '....';
  MessageBoxW(Handle, PWideChar(ws), PWideChar(ws), 0);
Du musst den WideString nach LPCWSTR casten und das entspricht einem PWideChar in Delphi:
WinUser.h:
Code:
int
WINAPI
MessageBoxW(
    __in_opt HWND hWnd,
    __in_opt LPCWSTR lpText,
    __in_opt LPCWSTR lpCaption,
    __in UINT uType);

ErazerZ 6. Jul 2006 22:54

Re: BCB: MessageBox läßt sich nicht mit WideStrings füttern
 
Zitat:

Zitat von messie
Zitat:

Zitat von xaromz
Wie wäre es, MessageBoxW zu verwenden?

gibt es, ist aber nicht dokumentiert. Aber die Widestrings schluckt das Ding auch nicht, interessanterweise für den anzuzeigenden Text, nicht aber für die Caption
Delphi-Quellcode:
WideString s;

  if (MessageBoxW(s,s, MB_YESNO) == 6)
  {
    //Anweisung
  }
wird angemeckert mit
Zitat:

E2342 Type mismatch in parameter 'lpCaption' (wanted 'const wchar_t *', got 'long')
Das kann ich mir nicht erklären (vielleicht doch die Hitze)

Grüße, Messie

du hast vergessen das Handle anzugeben also richtig müsste es lauten:
Delphi-Quellcode:
  WideString s;
  s = "test";

  if (MessageBoxW(0, s, s, MB_YESNO) == ID_YES)
  {
    //Anweisung
  }

messie 7. Jul 2006 11:32

Re: BCB: MessageBox läßt sich nicht mit WideStrings füttern
 
Zitat:

Zitat von ErazerZ
du hast vergessen das Handle anzugeben

Ja, das war's. Also doch die Hitze...

Danke, Messie


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz