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

1

26.10.2014, 22:19

Hilfe bei einem einfachen Hallo Programm aus einem buch

hi Ich wollte ein einfaches Fenster Programmieren nur habe ich paar Probleme
Ich habe schon versucht mit Umkonventierung von int nach const char,
das habe ich in einem anderen Forum gelesen und mehrere andere Sachen habe ich auch schon Probiert,
aber nichts hat geholfen
ich bin ein totaler Neuling ;( .


1. const char nicht konventiert mit LPCWSTR .
Was muss ich ändern bei szClassName und sztext


2. TextOut nicht 4 Argumente konvertiert.
Was hat das zu Bedeuten das ich 4 Argumente habe

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
// Fenster.cpp

#include <Windows.h>

LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wParm, LPARAM lParm)
{
    
    HDC hdc;
    RECT rect;
    const char sztext[] = "Ich bin da!";
        switch (msg)
    {
        case WM_MOVE:
        {
            hdc = GetDC(hwnd);
            GetClientRect(hwnd, &rect);
                TextOut(hdc, rect.right / 2 - 85, rect.bottom / 2 - 10, sztext, strlen(sztext));
                ReleaseDC(hwnd, hdc);
                return(0);

        }       break;
        case WM_DESTROY:
        {
            PostQuitMessage(0);
            return(0);

        }break;

        default:
            break;
    }
        return(DefWindowProc(hwnd, msg, wParm, lParm));
}

int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    WNDCLASSEX wc;
    HWND hwnd;
    MSG Msg;     
    const char szClassName[] = "S";

    wc.cbSize = sizeof (WNDCLASSEX);
    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc = WindowProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hinstance;
    wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
    wc.lpszMenuName = NULL;
    wc.lpszClassName = szClassName;
    wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

    if (!RegisterClassEx (&wc))
    {
        return 0;

    }
    if (!(hwnd = CreateWindowEx(NULL,szClassName, "Fenster", WS_OVERLAPPEDWINDOW | WS_VISIBLE,300,300,400,300,NULL,NULL,hinstance,NULL)))
    {
        return (0);
    }
    ShowWindow(hwnd, nCmdShow);
        UpdateWindow(hwnd);

    while (GetMessage(&Msg,NULL,0,0)==TRUE)
    {
        if (Msg.message == WM_QUIT)
        {
            break;
        }
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
    return (0);
}



Vielen dank für jede Hilfe

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

26.10.2014, 22:30

Wenn du die komplette Fehlermeldung des Compilers posten würdest, wäre es wesentlich einfacher dir zu helfen.
PS: Willkommen im Forum!

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

3

26.10.2014, 23:39

Unabhängig von deinem Problem. Ist es möglich dass du noch keine Programmiererfahrung hast und da jetzt direkt mit einem Buch für Fortgeschrittene einsteigst? Wenn das so ist oder du nur wenig Erfahrung hast dann tu dir selbst den Gefallen und Fahr noch mal eine Stufe zurück.
Poste deine Fehlermeldungen bitte möglichst im original. Wir können alle hoffentlich genügend Englisch um zu verstehen was da steht und durch die Übersetzungen werden für uns manche Dinge vielleicht nicht so klar. Bei der ersten Fehlermeldung geht es wohl darum dass LPCWSTR erwartet wird und du ihm einen const char* gibst. Du schreibst const char, aber "const char" und "const char*" sind zwei verschiedene Dinge. Bei dem zweiten handelt es sich um einen Zeiger wie du hoffentlich schon weißt. Du machst ein Array vom Typ "const char" welches dir einen Zeiger zurück gibt. Nämlich den Zeiger auf das erste Element des Arrays. Deshalb muss man bei C++ normal auch die Größe mit übergeben damit man weiß wie lang das gesamte Array ist. Das weißt du aber hoffentlich auch schon. LPCWSTR ist nun ein bestimmtes Format für deine Strings. LPCWSTR ist im Endeffekt nur ein define für irgendetwas. Das habe ich zumindest so im Kopf, normalerweise arbeite ich nicht mit C++ und mir fehlt da in vielen Fällen einfach die Erfahrung. Du kannst aber zwischen den einzelnen Typen konvertieren. Teilweise reicht es auch schon wenn du den Zeichensatz in deiner IDE umstellst. Deine IDE ist vermutlich Visual Studio oder CodeBlocks oder sowas. Also das Programm womit du deinen Code schreibst. Wenn du mal nach der Konvertierung googlest findest du da denke ich schon was passendes
Was deinen zweiten Fehler angeht, da kann ich nicht mal entschlüsseln was du damit sagen möchtest. Kann der 4te Parameter nicht konvertiert werden? Oder erwartet die Funktion eigentlich nicht 4 Parameter sondern eine andere Anzahl? Da solltest du normal gucken können was die Funktion nun erwartet und anhand dessen sollte der Fehler recht schnell klar sein.
Wie gesagt mir kommt es so vor als fehlt dir Grundlagenwissen und du beschäftigst dich mit weitergehenden Themen. Wenn das so sein sollte würde ich dir vorschlagen entweder ein Grundlagenbuch durchzuarbeiten oder ganz davon abzusehen. Zumindest von dem was du grad da tust. Du könntest ja auch mal eine andere Sprache mit passendem Framework angucken wo das alles einfacher geht. Wobei du auch hier erst mit den Grundlagen anfangen musst. Oder du nimmst dir eine Engine bei der du allgemein nicht ganz so viel programmieren muss. Wobei man auch hier ab einem gewissen Punkt wieder mehr programmieren muss. Ich schweife vom Thema ab. Am Ende weiß ich ja nicht was du kennst/kannst und vor allem was du vor hast.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige