Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Label ins Windows-fenster hinzufügen??

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.08.2003, 16:22 Uhr
Nachtfalke



Hi C++-Freunde!!

Ich hab es geschafft, ein leeres Windows-Fenster in C++ zu schreiben.
Aber ich bin mit dem Quelltext nicht ganz fertig, denn es fehlt noch ein
Label.

Wie füge ich ein Label in das Windows-Fenster hinzu? Gibt es in der
Headerdatei "Windows.h" ein Objekt oder Schlüsselwort mit dem man
ein Label schreiben und formatieren kann, wie z.B. für Schriftgröße
oder Schriftart?? Wenn ja, könnt Ihr sie mir nennen?

Quelltext für ein leeres Windows-Fenster:


C++:
#include <windows.h>         // Headerdatei der Windows-API

// Prototypen
LRESULT CALLBACK WndProc(HWND hWnd, UINT message,
     WPARAM wParam, LPARAM lParam);

// Hauptfunktion
int APIENTRY WinMain(
           HINSTANCE hInstance,
           HINSTANCE hPrevInstance,
           LPSTR lpCmdLine,
           int nCmdShow)
{
   WNDCLASSEX wndclass;             // Fensterklasse wndclass
   HWND hWnd;                       // Handle auf Fenster
   MSG msg;                         // Windows-Nachricht

   // Um ein Fenster zu erzeugen müssen wir zunächst einen
   // neuen Fenstertyp definieren. Dazu legen wir mit Hilfe
   // der Struktur WNDCLASSEX zunächst alle Eigenschaften
   // des neuen Fensters fest

   wndclass.cbSize = sizeof(WNDCLASSEX);
   wndclass.style = CS_HREDRAW | CS_VREDRAW;
   wndclass.lpfnWndProc = WndProc;
   wndclass.cbClsExtra = 0;
   wndclass.cbWndExtra = 0;
   wndclass.hInstance = hInstance;
   wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
   wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
   wndclass.hbrBackground = (HBRUSH) COLOR_WINDOW;
   wndclass.lpszMenuName = NULL;
   wndclass.lpszClassName = "FirstWin";
   wndclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

   // Mit der Funktion RegisterClassEx übergeben wir die
   // Struktur nun an Windows (Fensterklasse registrieren)

   RegisterClassEx(&wndclass);

   // Mit einem Aufruf von CreateWindowEx erzeugen wir ein
   // neues Fenster unserer soeben registrierten Fensterklasse
   // CreateWindoeEx gibt einen Handle (Zugriffsnummer zur
   // Identifizierung) auf unser Fenster zurück

   hWnd = CreateWindowEx(
          WS_EX_CLIENTEDGE,
          "FirstWin",
          "Unser erstes Fenster",
          WS_OVERLAPPEDWINDOW,
          CW_USEDEFAULT,
          CW_USEDEFAULT,
          CW_USEDEFAULT,
          CW_USEDEFAULT,
          NULL,
          NULL,
          hInstance,
          NULL);

   ShowWindow(hWnd, nCmdShow);           // Fenster anzeigen
   UpdateWindow(hWnd);                   // und neuzeichnen

   // Windows-Programme reagieren auf Nachrichten, die
   // Windows sendet. Neben dem anlegen der Fenster hat
   // eine WinMain-Funktion eigentlich nur die Aufgabe,
   // diese Nachrichten bei Windows abzufrufen und an
   // die Fenster zu verteilen

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

   return msg.wParam;
}

// WndProc ist die Nachrichtenbehandlungsroutine unseres
// Fenstertyps "FirstWin". Für das Aufrufen dieser Funktion
// ist Windows verantwortlich!

LRESULT CALLBACK WndProc(
           HWND hWnd,
           UINT message,
           WPARAM wParam,
           LPARAM lParam)
{
   // In unserem ersten Programm interessiert uns nur die
   // Nachricht WM_DESTROY, die gesendet wird wenn das
   // Fenster geschlossen wurde

   switch(message)
   {
       case WM_DESTROY:
            PostQuitMessage(0);            // Programm beenden
            return 0;
   }

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


Dieser Post wurde am 25.08.2003 um 16:25 Uhr von Nachtfalke editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.08.2003, 19:07 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hallo, was verstehst du unter "Label"?
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.08.2003, 19:25 Uhr
Nachtfalke



Unter den Begriff "Label" verstehe ich "Schrift" , dass in einer
bestimmten stelle des Feldes im Windows-Fenster (auch Formula
genannt) ausgegeben wird.

Dieser Post wurde am 25.08.2003 um 19:27 Uhr von Nachtfalke editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
25.08.2003, 20:27 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo
in LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

C++:
static HWND hWndLabel;
HINSTANCE hInstance;

........
........

switch( message )
{
    case WM_CREATE:
        hInstance=(HINSTANCE) GetWindowLong(hWnd,GWL_HINSTANCE);
        hWndLabel=CreateWindow(TEXT("static"),"Label",WS_CHILD|WS_VISIBLE|SS_CENTER,
            20,20,100,20,hWnd,NULL,hInstance,NULL);
        return 0;
    case WM_COMMAND:
        ..............
    ..............
}


--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 25.08.2003 um 20:29 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
25.08.2003, 20:58 Uhr
Nachtfalke



Hat leider nicht geklappt. Kannst Du den Quelltext so aufschreiben, wie Du es dir vorgestellt hast??
Dieser Post wurde am 25.08.2003 um 21:04 Uhr von Nachtfalke editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
25.08.2003, 21:21 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Meinst du vielleicht

C++:
static void WmPaint(HWND hwnd)
{
  PAINTSTRUCT ps;
  HDC         hdc;
  TEXTMETRIC  tm;
  int         nHeight;

  hdc = BeginPaint(hwnd, &ps);

  SelectObject(hdc, GetStockObject(ANSI_FIXED_FONT));
  SetBkMode(hdc, TRANSPARENT);

  GetTextMetrics(hdc, &tm);
  nHeight = tm.tmHeight + tm.tmExternalLeading;

  TextOut(hdc,10, nHeight,"Das ist ein test", sizeof("Das ist ein test"));  
  
  EndPaint(hwnd, &ps);
}


Nicht vergessen in WinMan UpdateWindow(hwndMain); senden - wgen WM_PAINT

mfg
--

Dieser Post wurde am 25.08.2003 um 21:22 Uhr von mike editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
25.08.2003, 21:31 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo

Zitat:
mike postete
Hi!
Meinst du vielleicht...


Nein ein statisches Textfeld:

C++:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int wmId, wmEvent;
    PAINTSTRUCT ps;
    HDC hdc;
    static HWND hWndLabel;
    HINSTANCE hInstance;

    switch( message )
    {
        case WM_CREATE:
            hInstance=(HINSTANCE) GetWindowLong(hWnd,GWL_HINSTANCE);
            hWndLabel=CreateWindow(TEXT("static"),"Label",WS_CHILD|WS_VISIBLE|SS_CENTER,
                20,20,100,20,hWnd,NULL,hInstance,NULL);
            return 0;

        case WM_COMMAND:
            wmId    = LOWORD(wParam);
            wmEvent = HIWORD(wParam);
            // Menüauswahlen analysieren:
            switch( wmId )
            {
                case IDM_ABOUT:
                   DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
                   break;
                case IDM_EXIT:
                   DestroyWindow( hWnd );
                   break;
                default:
                   return DefWindowProc( hWnd, message, wParam, lParam );
            }
            break;
        case WM_PAINT:
            hdc = BeginPaint (hWnd, &ps);
            // ZU ERLEDIGEN: Hier beliebigen Code zum Zeichnen hinzufügen...
            RECT rt;
            GetClientRect( hWnd, &rt );
            EndPaint( hWnd, &ps );
            break;
        case WM_DESTROY:
            PostQuitMessage( 0 );
            break;
        default:
            return DefWindowProc( hWnd, message, wParam, lParam );
   }
   return 0;
}


--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
25.08.2003, 22:27 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat:
Nachtfalke postete
Unter den Begriff "Label" verstehe ich "Schrift" , dass in einer
bestimmten stelle des Feldes im Windows-Fenster (auch Formula
genannt) ausgegeben wird.


Achso, du meinst nen Text im Dialogframe, na dann
--
class God : public ChuckNorris { };
 
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: