|
You last visited: Today at 19:02
Advertisement
[win32 api] Variable in MessageBox
Discussion on [win32 api] Variable in MessageBox within the General Coding forum part of the Coders Den category.
10/14/2009, 22:00
|
#1
|
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
|
[win32 api] Variable in MessageBox
geht:
Code:
#include <windows.h>
int WINAPI WinMain( HINSTANCE, HINSTANCE, PSTR, int )
{
MessageBox(NULL,L"Text", L"Titel",MB_OK);
return 0;
}
geht nicht:
Code:
#include <windows.h>
int WINAPI WinMain( HINSTANCE, HINSTANCE, PSTR, int )
{
char text[10] = "Text";
char titel[10] = "Titel";
MessageBox(NULL,text, titel,MB_OK);
return 0;
}
In diversen (veralteten?) Tutorials wird mir gesagt dass das gehen sollte.
Google hat mich auf sprintf und CString hingewiesen, bekomme aber immer die Fehlermeldung: cannot convert parameter x from 'char [x]' to 'LPCWSTR'. Wie muss die convertierung korrekt aussehen?
Ich nutze VS2008 pro, ist der in dem Tutorial genutzen Visual C++6 Compiler eventuell der prägnante Unterschied?
Thx 4 Help.
|
|
|
10/14/2009, 22:04
|
#2
|
elite*gold: 15
Join Date: Nov 2005
Posts: 13,021
Received Thanks: 5,324
|
Machste halt als LPCWSTR und nicht als char.
|
|
|
10/14/2009, 22:17
|
#3
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
ich kenne das
Das hasse ich, die ganzen Tutorials die ich kenne sind mit VS6 und gerade da gehen Dinge, die ich nicht so nachbauen kann.
Andererseits ist es gut, so trainiere ich Kreativität und meine programming skills xD
folgendes soll angeblich gehen (windows 98 und VS 6 zeit), geht aber mit VS 2008 nicht:
Code:
WinExec(m_strList1, SW_NORMAL);
m_strList1 ist der Value der Auswahl in einem Listenfeld
oder folgendes:
Code:
if((m_bCheck1==TRUE) && (m_bCheck2==TRUE)) m_ctlList1.Dir ( DDL_HIDDEN | DDL_EXCLUSIVE, m_strCombo1+"\\*.exe");
da gibt mir VS den Fehler dass man keine 2 Strings addieren kann =(
naja so musste ich ein bisschen improvisieren.
|
|
|
10/14/2009, 22:26
|
#4
|
elite*gold: 0
Join Date: Mar 2008
Posts: 747
Received Thanks: 245
|
Quote:
Originally Posted by xhelloselm
ich kenne das
Das hasse ich, die ganzen Tutorials die ich kenne sind mit VS6 und gerade da gehen Dinge, die ich nicht so nachbauen kann.
Andererseits ist es gut, so trainiere ich Kreativität und meine programming skills xD
folgendes soll angeblich gehen (windows 98 und VS 6 zeit), geht aber mit VS 2008 nicht:
Code:
WinExec(m_strList1, SW_NORMAL);
m_strList1 ist der Value der Auswahl in einem Listenfeld
|
Nunja wen man sich mal ankuckt was in der msdn über WinExec steht dan findet man auch die warscheinliche ursache
Quote:
|
This function is provided only for compatibility with 16-bit Windows
|
|
|
|
10/14/2009, 22:28
|
#5
|
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
|
Quote:
Originally Posted by Adroxxx
Machste halt als LPCWSTR und nicht als char.
|
schon probiert
Code:
LPCWSTR text[10] = "Text";
Fehlermeldung: error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'LPCWSTR [10]' to 'LPCWSTR'
Edit//: so gehts
Code:
#include <windows.h>
int WINAPI WinMain( HINSTANCE, HINSTANCE, PSTR, int )
{
char text[10] = "Text";
char titel[10] = "Titel";
MessageBox(NULL,(LPCWSTR)text, (LPCWSTR)titel,MB_OK);
return 0;
}
|
|
|
10/14/2009, 22:42
|
#6
|
elite*gold: 0
Join Date: Mar 2008
Posts: 747
Received Thanks: 245
|
PHP Code:
#include <windows.h>
int WINAPI WinMain( HINSTANCE, HINSTANCE, PSTR, int ) { LPCTSTR text = "Text"; LPCTSTR titel = "Titel"; MessageBox(NULL,text, titel,MB_OK); return 0; }
oh hab das EDIT übersehen.
|
|
|
10/14/2009, 22:44
|
#7
|
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
|
Quote:
Originally Posted by Akorn
PHP Code:
#include <windows.h>
int WINAPI WinMain( HINSTANCE, HINSTANCE, PSTR, int )
{
LPCTSTR text = "Text";
LPCTSTR titel = "Titel";
MessageBox(NULL,text, titel,MB_OK);
return 0;
}
|
Da hat mein Compiler was dagegen
|
|
|
10/14/2009, 22:47
|
#8
|
elite*gold: 1
Join Date: Jul 2005
Posts: 553
Received Thanks: 454
|
Sieh halt, wie Adroxxx schon andeutete, in deinen Linker-Einstellungen nach, als was 'MessageBox' aufgelöst wird.
Wahrscheinlich wohl als 'MessageBoxW'..
Also würdest du dessen Parameter total verhauen (Titel vs T\0i\0t\0e\0l\0)
Code:
WORD text[10] = L"Text";
WORD titel[10] = L"Titel";
Das L muss vor die Stringkonstante, damit es auch als Unicode (2 Bytes, dafür WORD) abgelegt wird (s. oben).
'LPCWSTR text[10]' wäre ein Array aus Pointern zu Wide-Strings, das nicht viel am eigentlichen 2 Byte-Problem ändern würde..
|
|
|
10/14/2009, 22:49
|
#9
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
Quote:
Originally Posted by Akorn
Nunja wen man sich mal ankuckt was in der msdn über WinExec steht dan findet man auch die warscheinliche ursache
|
nunja aber laut Tutorial geht es xD ich kenne die Ursache selbst
|
|
|
10/14/2009, 23:08
|
#10
|
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
|
Quote:
Originally Posted by link
Sieh halt, wie Adroxxx schon andeutete, in deinen Linker-Einstellungen nach, als was 'MessageBox' aufgelöst wird.
Wahrscheinlich wohl als 'MessageBoxW'..
Also würdest du dessen Parameter total verhauen (Titel vs T\0i\0t\0e\0l\0)
Code:
WORD text[10] = L"Text";
WORD titel[10] = L"Titel";
Das L muss vor die Stringkonstante, damit es auch als Unicode (2 Bytes, dafür WORD) abgelegt wird (s. oben).
'LPCWSTR text[10]' wäre ein Array aus Pointern zu Wide-Strings, das nicht viel am eigentlichen 2 Byte-Problem ändern würde..
|
geht nicht
Code:
#include <windows.h>
int WINAPI WinMain( HINSTANCE, HINSTANCE, PSTR, int )
{
WORD text[10] = L"Text";
WORD titel[10] = L"Titel";
MessageBox(NULL,(LPCWSTR)text, (LPCWSTR)titel,MB_OK);
return 0;
}
geht ebenso nicht
Code:
#include <windows.h>
int WINAPI WinMain( HINSTANCE, HINSTANCE, PSTR, int )
{
WORD text[10] = L"Text";
WORD titel[10] = L"Titel";
MessageBox(NULL,text, titel,MB_OK);
return 0;
}
geht
Code:
#include <windows.h>
int WINAPI WinMain( HINSTANCE, HINSTANCE, PSTR, int )
{
wchar_t text[10] = L"Text";
wchar_t titel[10] = L"Titel";
MessageBox(NULL,(LPCWSTR)text, (LPCWSTR)titel,MB_OK);
return 0;
}
geht auch
Code:
#include <windows.h>
int WINAPI WinMain( HINSTANCE, HINSTANCE, PSTR, int )
{
wchar_t text[10] = L"Text";
wchar_t titel[10] = L"Titel";
MessageBox(NULL,text, titel,MB_OK);
return 0;
}
Was hab ich gemacht? Wo ist der Unterschied, was davon ist die beste Lösung?
|
|
|
10/14/2009, 23:11
|
#11
|
elite*gold: 0
Join Date: Mar 2008
Posts: 747
Received Thanks: 245
|
Quote:
Originally Posted by | Moep |
Da hat mein Compiler was dagegen 
|
VS?
Ich habe es mit MinGW kompilieren können. Und es funkioniert auch.
|
|
|
10/14/2009, 23:20
|
#12
|
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
|
Quote:
Originally Posted by Akorn
VS?
Ich habe es mit MinGW kompilieren können. Und es funkioniert auch.
|
Ja VisualStudio 2008 pro. Ich habe mich bisher noch nicht mit Linker Einstellungen beschäftigt und nutze eigentlich immer die voreingestellten.
@Adroxxx könntest du bitte den Tread Titel berichtigen
|
|
|
10/14/2009, 23:29
|
#13
|
elite*gold: 1
Join Date: Jul 2005
Posts: 553
Received Thanks: 454
|
@| Moep |:
Das mit der Typenbezeichnung liegt wohl an STRICT (ich habe den C-, nicht den C++-Modus, benutzt).
|
|
|
10/15/2009, 11:16
|
#14
|
elite*gold: 15
Join Date: Nov 2005
Posts: 13,021
Received Thanks: 5,324
|
Quote:
Originally Posted by | Moep |
Ja VisualStudio 2008 pro. Ich habe mich bisher noch nicht mit Linker Einstellungen beschäftigt und nutze eigentlich immer die voreingestellten.
@Adroxxx könntest du bitte den Tread Titel berichtigen 
|
Kannst du nicht den Thread Titel selbst ändern ? Sollte eigentlich gehen  . Naja wie soll ich ihn den ändern?
btw.
|
|
|
 |
Similar Threads
|
MessageBox Hook
08/16/2010 - General Coding - 17 Replies
Hallo Leute,
ich hab versucht die MessageBoxA Funktion in user32.dll zu hooken, klappt an und für sich schon ganz gut. Ich hab ein Programm gefunden, dass alle 10 Sek. eine MessageBox aufmacht. Nun ist es so wenn ich meine DLL in das Programm injecte, wird die erste MessageBox mit meinen Text geändert, die nachfolgenden aber nicht mehr. Eventuell könnte mir jemand bei meinem kleinen Problem helfen.#include <Windows.h>
#include <stdio.h>
#include "Hook.h"
int WINAPI hook_MessageBox(HWND...
|
MessageBox packet? o.o
02/23/2010 - CO2 Private Server - 1 Replies
I think I saw a server back sometime when after X logins a messagebox appeared that you`re banned for 1 hour. Is there a packet for this, or was this in an other game? XD
|
Messagebox zu Programmstart
02/21/2010 - AutoIt - 3 Replies
Hoi EPvP..
da ich ewig nix mit autoIT gemacht hab, wollte ich heute "schnell" ein paar Vorgänge automatisieren..wollte dann gern beim Start-UP nen kleines Pop-Up ham, dass sagt wie was gelegt ist..doch leider mag autoIT nicht so ganz mitspielen..hab leider druch nen fdisk meine alten Übungen verloren und kanns nimmer nachschauen :(..wäre top, wenn mir jemand helfen könnte :)
MsgBox (0,"EI",& @CRLF & & @CRLF &
"This is a just a alpha-version..there might be bugs !"& @CRLF &
"1 -...
|
C++ Win32 Frage
12/05/2009 - C/C++ - 3 Replies
Hab da mal eine kleine Frage. Und zwar mache ich gerade ein Tutorial zur Win32 und bin da auf etwas gestoßen was ich nicht verstehe:
void Register ()
{
::RegisterClass (&_class);
}
Kann mir einner sagen was dieser eine Operator vor der Funktion zu bedeuten hat?(Mir ist nur bekannt, das man ihn braucht, wenn man Elementfunktionen deklarieren will.)
|
All times are GMT +1. The time now is 19:02.
|
|