Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Zeus

Frischling

  • »Zeus« ist der Autor dieses Themas

Beiträge: 83

Beruf: Schule

  • Private Nachricht senden

1

09.05.2008, 18:28

unicode ausschalten (vc++2008)

hi,

ich weis das es bereits mehrere ähnliche themen dazu gibt, allerdings sinde diese soweit ich es gesehen habe etwas älterer nautr,

also mein problem,

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# include <windows.h>

LRESULT CALLBACK WindowProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); //callback


int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInstance, LPSTR lpcmdline, int ncmdshow){
    
    WNDCLASSEX  windowclass;
    HWND        hWnd;
    MSG         message;

    const char szClassName[] = "Das erste Fenster";

    windowclass.cbSize = sizeof(WNDCLASSEX);        //zwischensp. größe struct


    windowclass.style = CS_HREDRAW | CS_VREDRAW;    //neuzeichnen des feinsters bei verschiebung


    windowclass.lpfnWndProc = WindowProc;           // pointer @ callback


    windowclass.cbClsExtra = 0;
    windowclass.cbClsExtra = 0;

    windowclass.hIcon   = LoadIcon(NULL, IDI_APPLICATION);
    windowclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
    windowclass.hCursor = LoadCursor (NULL, IDC_ARROW);

    windowclass.hbrBackground = (HBRUSH) COLOR_BACKGROUND+1;

    windowclass.lpszMenuName = NULL;

    windowclass.lpszClassName = szClassName;

    if(!RegisterClassEx(&windowclass)) return 0;

    hWnd = CreateWindowEx ( NULL,
                            szClassName,
                            "Das erste Fenster!",
                            WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                            100, 100,
                            300, 250,
                            NULL,
                            NULL,
                            hInst,
                            NULL);

    if(hWnd == NULL) return 0;

    while (GetMessage(&message, NULL, 0, 0))
    {
        TranslateMessage(&message);
        DispatchMessage(&message);
    }

    return(int)(message.wParam);
}       //winmain


LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch(message)
    {
    case WM_DESTROY:
        {
            PostQuitMessage(0);
            return 0;
        }
    case WM_KEYDOWN:
        {
            switch(wParam)
            {
            case VK_ESCAPE:
                {
                    PostQuitMessage(0);
                    return 0;
                }
            }
        } break;
    }

    return (DefWindowProc (hWnd, message, wParam, lParam));
}


verursacht folgendes problem

1>test.cpp
1>c:\users\zeus\documents\visual studio 2008\projects\test2\test2\test.cpp(30) : error C2440: '=': 'const char [18]' kann nicht in 'LPCWSTR' konvertiert werden
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>c:\users\zeus\documents\visual studio 2008\projects\test2\test2\test.cpp(43) : error C2664: 'CreateWindowExW': Konvertierung des Parameters 2 von 'const char [18]' in 'LPCWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>Das Buildprotokoll wurde unter "file://c:\Users\Zeus\Documents\Visual Studio 2008\Projects\test2\test2\Debug\BuildLog.htm" gespeichert.


nun habe ich bereits heraus gefunden das es iwas mit unicode zu tun hat, aber ich weis nicht wo ich es abschalten kann

mfg zeus

Faule Socke

Community-Fossil

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

2

09.05.2008, 18:46

Also ich hab das 2008er net, aber ich denke es ist ähnlich wie beim 2005:

Im "Projektmappen Explorer" rechtsklick auf das Projekt machen. Dann links in dem Baum auf "Konfigurationseigenschaften"->"Allgemein" klicken. Dort ist dann unter "Projektstandards" das Feld "Zeichensatz". Mit "nicht festgelegt" sollte es funktionieren.

Socke

3

09.05.2008, 18:48

hi!
ich hab VC++ 2005 express edition, bei mir gehts folgendermaßen:

Projekt -> [Projektname]-Eigentschaften -> Konfigurationseigenschaften -> Zeichensatz
dort dann "nicht festgelegt" reinmachen

hoffe ich konnt dir helfen...

Anonymous

unregistriert

4

09.05.2008, 19:01

Wie wäre es wenn man es eben nicht ausmacht? Es hat schon seine Berechtigung, dass es Standardmäßig aktiviert ist.

Deinen Quelltext kann man doch in weniger als 30 Sekunden voll Unicode und ANSI-Fähig machen. Also, warum kein Unicode? Benutzt du etwa keine deutschen Umlaute in deinem Programm? ;)

Zeus

Frischling

  • »Zeus« ist der Autor dieses Themas

Beiträge: 83

Beruf: Schule

  • Private Nachricht senden

5

09.05.2008, 19:10

Zitat von »"unsigned long"«

Wie wäre es wenn man es eben nicht ausmacht? Es hat schon seine Berechtigung, dass es Standardmäßig aktiviert ist.

Deinen Quelltext kann man doch in weniger als 30 Sekunden voll Unicode und ANSI-Fähig machen. Also, warum kein Unicode? Benutzt du etwa keine deutschen Umlaute in deinem Programm? ;)


problem compile fehler ... deshalb ...

6

09.05.2008, 19:21

Der Fehler ist hier

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
hWnd = CreateWindowEx (    NULL,
                            szClassName,
                            "Das erste Fenster!",
                            WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                            100, 100,
                            300, 250,
                            NULL,
                            NULL,
                            hInst,
                            NULL);


Du kannst entweder auf unicode verzichten und eine andere Funktion aufrufen

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
hWnd = CreateWindowExA (    NULL,
                            szClassName,
                            "Das erste Fenster!",
                            WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                            100, 100,
                            300, 250,
                            NULL,
                            NULL,
                            hInst,
                            NULL);


oder noch besser der Funktion entsprechenden unicode geben

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
hWnd = CreateWindowEx (    NULL,
                            szClassName,
                            L"Das erste Fenster!",
                            WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                            100, 100,
                            300, 250,
                            NULL,
                            NULL,
                            hInst,
                            NULL);

Zeus

Frischling

  • »Zeus« ist der Autor dieses Themas

Beiträge: 83

Beruf: Schule

  • Private Nachricht senden

7

09.05.2008, 20:11

gemacht -> geht leider nicht, selber fehler

Anonymous

unregistriert

8

09.05.2008, 20:11

Zitat von »"Zeus"«

Zitat von »"unsigned long"«

Wie wäre es wenn man es eben nicht ausmacht? Es hat schon seine Berechtigung, dass es Standardmäßig aktiviert ist.

Deinen Quelltext kann man doch in weniger als 30 Sekunden voll Unicode und ANSI-Fähig machen. Also, warum kein Unicode? Benutzt du etwa keine deutschen Umlaute in deinem Programm? ;)


problem compile fehler ... deshalb ...
Ich denke eher dein Code ist der Fehler und meiner Meinung nach komplett falsch.

Guck mal in der MSDN nach "TCHAR", "_T" und "TEXT". char wird nicht mehr für Texte benutzt unter Windows - zurecht. Deinen Code wird man sicherlich auf Windows Seven nur noch in einem Emulationsmodus starten können - wenn überhaupt.

Zeus

Frischling

  • »Zeus« ist der Autor dieses Themas

Beiträge: 83

Beruf: Schule

  • Private Nachricht senden

9

09.05.2008, 20:15

du verkennst die tatsachen, es geht mir akl nich darum up to date zu proggen das ist ein kleines test programm, zum kennenlernen der winapi ...

Anonymous

unregistriert

10

09.05.2008, 20:16

Zitat von »"Zeus"«

du verkennst die tatsachen, es geht mir akl nich darum up to date zu proggen das ist ein kleines test programm, zum kennenlernen der winapi ...
Jop, daher sage ich ja: TCHAR, _T und TEXT lernen, das ist WinAPI und ohne diese Dinge kann man in der WinAPI nichts richtiges reißen. Also nicht einfach Unicode ausschalten sondern dich damit sehr gut anfreunden.

Werbeanzeige