Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 19:02

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[win32 api] Variable in MessageBox

Discussion on [win32 api] Variable in MessageBox within the General Coding forum part of the Coders Den category.

Reply
 
Old   #1
 
| Moep |'s Avatar
 
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.
| Moep | is offline  
Old 10/14/2009, 22:04   #2

 
Adroxxx's Avatar
 
elite*gold: 15
Join Date: Nov 2005
Posts: 13,021
Received Thanks: 5,324
Machste halt als LPCWSTR und nicht als char.
Adroxxx is offline  
Old 10/14/2009, 22:17   #3


 
MrSm!th's Avatar
 
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.
MrSm!th is offline  
Old 10/14/2009, 22:26   #4
 
elite*gold: 0
Join Date: Mar 2008
Posts: 747
Received Thanks: 245
Quote:
Originally Posted by xhelloselm View Post
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
Akorn is offline  
Old 10/14/2009, 22:28   #5
 
| Moep |'s Avatar
 
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
Quote:
Originally Posted by Adroxxx View Post
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;
}
| Moep | is offline  
Old 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 WinMainHINSTANCEHINSTANCEPSTRint )
{
    
LPCTSTR text "Text";
    
LPCTSTR  titel "Titel";
    
MessageBox(NULL,texttitel,MB_OK);
    return 
0;

oh hab das EDIT übersehen.
Akorn is offline  
Old 10/14/2009, 22:44   #7
 
| Moep |'s Avatar
 
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
Quote:
Originally Posted by Akorn View Post
PHP Code:
#include <windows.h>


int WINAPI WinMainHINSTANCEHINSTANCEPSTRint )
{
    
LPCTSTR text "Text";
    
LPCTSTR  titel "Titel";
    
MessageBox(NULL,texttitel,MB_OK);
    return 
0;


Da hat mein Compiler was dagegen
| Moep | is offline  
Old 10/14/2009, 22:47   #8
 
link's Avatar
 
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..
link is offline  
Thanks
2 Users
Old 10/14/2009, 22:49   #9


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
Quote:
Originally Posted by Akorn View Post
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
MrSm!th is offline  
Old 10/14/2009, 23:08   #10
 
| Moep |'s Avatar
 
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
Quote:
Originally Posted by link View Post
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?
| Moep | is offline  
Old 10/14/2009, 23:11   #11
 
elite*gold: 0
Join Date: Mar 2008
Posts: 747
Received Thanks: 245
Quote:
Originally Posted by | Moep | View Post
Da hat mein Compiler was dagegen
VS?
Ich habe es mit MinGW kompilieren können. Und es funkioniert auch.
Akorn is offline  
Old 10/14/2009, 23:20   #12
 
| Moep |'s Avatar
 
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
Quote:
Originally Posted by Akorn View Post
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
| Moep | is offline  
Old 10/14/2009, 23:29   #13
 
link's Avatar
 
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).
link is offline  
Old 10/15/2009, 11:16   #14

 
Adroxxx's Avatar
 
elite*gold: 15
Join Date: Nov 2005
Posts: 13,021
Received Thanks: 5,324
Quote:
Originally Posted by | Moep | View Post
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.
Adroxxx is offline  
Reply


Similar Threads 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.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.