Meldungsfenster mit formatiertem Text|Fehler
-
#include <windows.h> #include <tchar.h> #include <stdio.h> #define hi HINSTANCE #define t TEXT int CDECL MessageBoxPrint (TCHAR * szCaption, TCHAR szFormat, ...) { TCHAR szBuffer[1024]; va_list pArgList; va_start(pArgList, szFormat); _vsntprintf (szBuffer, sizeof(szBuffer) / sizeof(TCHAR) , szFormat, pArgList);// va_end(pArgList); return MessageBox(NULL, szBuffer, szCaption, 0); } int WINAPI WinMain (hi hInstance, hi hPreInstance, PSTR hCmdLine, int iCmdShow) { int cxScreen, cyScreen; cxScreen = GetSystemMetrics(SM_CXSCREEN); cyScreen = GetSystemMetrics(SM_CYSCREEN); MessageBoxPrintf (t ("ScrnSizze"), t ("Ihr Desktop hat eine Höhe von %i und eine Breite von %i Pixeln"), cxScreen, cyScreen); return 0; }Fehlermeldung:
C:\***\HelloMsg.cpp(14) : error C2664: '_vsnprintf' : Konvertierung des Parameters 1 von 'char *[1024]' in 'char *' nicht moeglich Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat C:\***\HelloMsg.cpp(16) : error C2664: 'MessageBoxA' : Konvertierung des Parameters 2 von 'char *[1024]' in 'const char *' nicht moeglich Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat C:\***\HelloMsg.cpp(28) : error C2065: 'MessageBoxPrintf' : nichtdeklarierter Bezeichner Fehler beim Ausführen von cl.exe. Petzold.exe - 3 Fehler, 0 Warnung(en)Das ist der Code vom Pezold, seite 42. müsste eigendlich Funktionieren
-
#define hi HINSTANCE #define t TEXTLOL!
-
IpOperator schrieb:
Fehlermeldung:
C:\***\HelloMsg.cpp(14) : error C2664: '_vsnprintf' : Konvertierung des Parameters 1 von 'char *[1024]' in 'char *' nicht moeglich Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat C:\***\HelloMsg.cpp(16) : error C2664: 'MessageBoxA' : Konvertierung des Parameters 2 von 'char *[1024]' in 'const char *' nicht moeglich Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformatzeiger übergeben
int CDECL MessageBoxPrint (TCHAR * szCaption, TCHAR *szFormat, ...)IpOperator schrieb:
Fehlermeldung:
C:\***\HelloMsg.cpp(28) : error C2065: 'MessageBoxPrintf' : nichtdeklarierter Bezeichner Fehler beim Ausführen von cl.exe.MessageBoxPrintf != MessageBoxPrint
funktionsnamen überprüfen :xmas2:
-
@Fehler 1/2: Da scheint irgendwas bei deiner Deklaration von szBuffer nicht zu stimmen - irgendwo ein '*' zu viel?
@Fehler 3: Da ist das 'f' beim Funktionsaufruf zu viel (oder bei der Definition zu wenig) - du hast eine Funktion MessageBoxPrint() und rufst die MessageBoxPrintf() auf.
-
so, das hab ich verbessert.
#include <windows.h> #include <tchar.h> #include <stdio.h> int CDECL MessageBoxPrintf (TCHAR * szCaption, TCHAR * szFormat, ...) { TCHAR szBuffer[1024]; va_list pArgList; va_start(pArgList, szFormat); _vsntprintf (szBuffer, sizeof(szBuffer) / sizeof(TCHAR), szFormat, pArgList); va_end (pArgList); return MessageBox(NULL, szBuffer, szCaption, 0); } int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPreInstance, PSTR szCmdLine, int iCmdShow) { int cxScreen, cyScreen; cxScreen = GetSystemMetrics(SM_CXSCREEN); cyScreen = GetSystemMetrics(SM_CYSCREEN); MessageBoxPrintf (TEXT("ScrnSizze"), TEXT("Ihr Desktop hat eine Höhe von %i und eine Breite von %i Pixeln"), cxScreen, cyScreen); return 0; }Fehlermeldung:
LIBCD.lib(crt0.obj) : error LNK2001: Nichtaufgeloestes externes Symbol _main Debug/HelloMsg.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise

-
hmm.... mit dem aktuellen devc++ geht es.
vielleicht ist meine VC++ Version dafür zu alt
-
du musst ein windows anwendung erstellen keine konsolen anwendung.
aber da die anwendung eher trivial ist würde eine konsolenanwendung auch ausreichen, dann müsstest du allerdinsint main(int argc, char *argv[]) { /*code*/ }schreiben
[edit]
rechtschreibung
-
ich hab eine windows anwendung dafür benutzt...
wenn ich ne konsolenanwendung starte, so kommt z.B. die Meldung der MessageBox doch, allerdings taucht dann dahinter eine konsole auf. das tut da nichts zur sache