Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » CreateWindow() HILFE!

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
25.11.2004, 22:27 Uhr
~Abel
Gast


Hi,
Ich habe folgendes Programm nach einem Buch geschrieben:

C++:
#include <windows.h>

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

char szProgName[]="ProgName";

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPreInst,LPSTR lpszCmdLine, int nCmdShow)

{
  HWND hWnd;
  MSG lpMsg;
  WNDCLASS wcApp;

  wcApp.lpszClassName=szProgName;
  wcApp.hInstance =hInst;
  wcApp.lpfnWndProc =WndProc;
  wcApp.hCursor =LoadCursor(NULL,IDC_ARROW);
  wcApp.hIcon =0;
  wcApp.lpszMenuName =0;
//wcApp.hbrBackground=GetStockObject(8);
  wcApp.style =CS_HREDRAW|CS_VREDRAW;
  wcApp.cbClsExtra =0;
  wcApp.cbWndExtra =0;
  if (!RegisterClass (&wcApp))
    return 0;
  hWnd=CreateWindow(szProgName,
                    "Programa sencillo en Windows",
                    WS_OVERLAPPEDWINDOW,
                    CW_USEDEFAULT, CW_USEDEFAULT,
                    CW_USEDEFAULT, CW_USEDEFAULT,
                    (HWND)NULL, (HMENU)NULL,
                    (HANDLE)hInst,
                    (LPSTR) NULL);
  ShowWindow(hWnd,nCmdShow);
  UpdateWindow(hWnd);
  
  while (GetMessage(&lpMsg,0,0,0))
    {
      TranslateMessage(&lpMsg);
      DispatchMessage(&lpMsg);
    }
  return(lpMsg.wParam);
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT messg,WPARAM wParam,LPARAM lParam)

{
  HDC hdc;
  PAINTSTRUCT ps;
  switch (messg)
    {
    case WM_PAINT:
      hdc=BeginPaint(hWnd,&ps);

      MoveToEx(hdc,0,0,NULL);
      LineTo(hdc,789,550);
      MoveToEx(hdc,300,0,NULL);
      LineTo(hdc,50,300);

      TextOut(hdc,100,30,"<- unas cuantas líneas ->",25);

      ValidateRect(hWnd,NULL);
      EndPaint(hWnd,&ps);
      break;
    
    case WM_DESTROY:
      PostQuitMessage(0);
      break;

      default:
      return(DefWindowProc(hWnd,messg,wParam,lParam));
      break;
    }
  return(0);
}




Leider kommt diesen Fehler beim compilieren:


Code:
Gráfico.cpp
Fborrar\Grafik\Gráfico.cpp(28) : error C2664: 'CreateWindowExA' :
Konvertierung des Parameters 11 von 'void *' in 'struct HINSTANCE__ *' nicht moeglich
Konvertierung von 'void*' in Zeiger auf nicht-'void' erfordert eine explizite Typumwandlung
Fehler beim Ausführen von cl.exe.



Wie soll ich diesen Fehler aufheben?, wer kann mir helfen?
Danke für die Antwort.
Abel.


Bearbeitung von typecast:
cpp-Tags gesetzt


Bearbeitung von Hans:
Quelltext neu formatiert

Dieser Post wurde am 10.02.2012 um 11:41 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.11.2004, 22:30 Uhr
0xdeadbeef
Gott
(Operator)


Ich hab die beiden Threads im ANSI-C/C++-Forum gelöscht, die Duplikate dieses Threads waren. Es reicht, den Kram einmal an einer Stelle zu posten, also mach das in Zukunft bitte.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.11.2004, 22:55 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


du konvertierst falsch:


C++:
,(HANDLE)hInst



schreib da doch einfach


C++:
hInst



und lass die C-Casts weg wo sie unnötig sind...
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
26.11.2004, 08:33 Uhr
~Abel
Gast


Danke FloSoft,
ich bin aber leider Programmieranfänger; was meinst Du mit den C-Casts?
Abel.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
26.11.2004, 08:56 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


naja C-Casts sind sowas:


C++:
(HANDLE)bla
(int)muh
(HWND)foo



normalerweise kann man die weglassen (außer der Compiler meckert dann das er nicht konvertieren kann, nur dann sind sie notwendig).
Wenn möglich sollte man solche casts vermeiden, da sie die typenprüfung der Compiler unterlaufen.

HINSTANCE != HANDLE

das ist dein Problem oben.

und z.b für


C++:
(LPSTR)NULL



kannste einfach


C++:
NULL



schreiben. Lass überall die "Klammer"-C-Casts bei den NULL's weg, die sind überflüssig.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
26.11.2004, 17:27 Uhr
~Abel
Gast


Ich Danke Dir nochmal. Jetz wird das Programm rigtig compiliert, aber das tut überhaupt nichts!; sollte es nicht zwei Linien zeichnen?
Abel.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
26.11.2004, 19:38 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hmm theoretisch sollte es das, und nen text ausgeben. Du hast ja keine Farbe eingestellt, evtl macht er es deshalb nicht (SetTextColor)
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
27.11.2004, 07:38 Uhr
~Abel
Gast


Hi FloSoft,
gestern hat mein Programm noch rigtig compiliert; heute bringt mir folgenden Fehler:

fborrar\grafik\gráfico.cpp(66) : fatal error C1010: Unerwartetes Dateiende waehrend der Suche nach der Direktive fuer die vorkompilierte Header-Datei
Fehler beim Ausführen von cl.exe.

muss man nicht überhaupt ein Hauptprogramm schreiben, also..:

int main()
{
...........
}

aber wie soll dieses aussehen um die Linien und Text ausgeben zu lassen?
Abel.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
27.11.2004, 13:22 Uhr
typecast
aka loddab
(Operator)



Zitat von FloSoft:
naja C-Casts sind sowas:

normalerweise kann man die weglassen (außer der Compiler meckert dann das er nicht konvertieren kann, nur dann sind sie notwendig).
Wenn möglich sollte man solche casts vermeiden, da sie die typenprüfung der Compiler unterlaufen.

...

Lass überall die "Klammer"-C-Casts bei den NULL's weg, die sind überflüssig.



*Heul*, casts sind unnoetig? Willst du mir was damit sagen
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: