WinAPI - Texte im Child-fenster anzeigen

Webdesigner's
Verfügbare Informationen zu "WinAPI - Texte im Child-fenster anzeigen"

  • Qualität des Beitrags: 0 Sterne
  • Beteiligte Poster: Snowball
  • Forum: Webdesigner's
  • Forenbeschreibung: Das Hilfe Forum für alle Webdesigner
  • aus dem Unterforum: Tutorial C++
  • Antworten: 1
  • Forum gestartet am: Freitag 20.07.2007
  • Sprache: deutsch
  • Link zum Originaltopic: WinAPI - Texte im Child-fenster anzeigen
  • Letzte Antwort: vor 15 Jahren, 8 Monaten, 3 Tagen, 11 Stunden, 51 Minuten
  • Alle Beiträge und Antworten zu "WinAPI - Texte im Child-fenster anzeigen"

    Re: WinAPI - Texte im Child-fenster anzeigen

    Snowball - 24.07.2007, 11:14

    WinAPI - Texte im Child-fenster anzeigen
    in diesem tutorial möchte ich euch zeigen wie man texte in einem bestimmten Child fenster anzeigen lassen kann. ich selber habe dien Quentext nur mit dem Compiler "Microsoft visual C++ 2005 express edition" getestet.

    kommen wir aber nun zum Quelltext, wie man sieht ist er in WinAPI geschrieben, also müss euer projekt eine Windows Anwendung sein.

    Code: #include <windows.h>
    #include "stdafx.h"

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

    const UINT PM_CHECKED      = WM_APP + 1;
    const char szTextChild[]   = "TextChild";
    const char szChoice[]      = "ChoiceChild";

    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
                       PSTR szCmdLine, int iCmdShow)
    {
       MSG         msg;
       HWND        hWnd;
       WNDCLASS    wc;
       
       const char  szAppName[] = "Dumme Menschen sind einfach dumm ...";
       
       wc.cbClsExtra           = 0;
       wc.cbWndExtra           = 0;
       wc.hbrBackground        = (HBRUSH) GetStockObject(WHITE_BRUSH);
       wc.hCursor              = LoadCursor(NULL, IDC_ARROW);
       wc.hIcon                = LoadIcon(NULL, IDI_APPLICATION);
       wc.hInstance            = hInstance;
       wc.lpfnWndProc          = WndProc;
       wc.lpszClassName        = szAppName;
       wc.lpszMenuName         = NULL;
       wc.style                = CS_HREDRAW | CS_VREDRAW;
       
       RegisterClass(&wc);
       
       wc.lpfnWndProc          = TextChildProc;
       wc.lpszClassName        = szTextChild;
       
       RegisterClass(&wc);
       
       wc.cbWndExtra           = sizeof(int);
       wc.hbrBackground        = (HBRUSH) GetStockObject(LTGRAY_BRUSH);
       wc.lpfnWndProc          = ChoiceProc;
       wc.lpszClassName        = szChoice;
       
       RegisterClass(&wc);
       
       hWnd = CreateWindow(    szAppName,
                               szAppName,
                               WS_OVERLAPPEDWINDOW,
                               CW_USEDEFAULT,
                               CW_USEDEFAULT,
                               CW_USEDEFAULT,
                               CW_USEDEFAULT,
                               NULL,
                               NULL,
                               hInstance,
                               NULL);

       ShowWindow(hWnd, iCmdShow);
       UpdateWindow(hWnd);
       
       while (GetMessage(&msg, NULL, 0, 0))
       {
          TranslateMessage(&msg);
          DispatchMessage(&msg);
       }
       
       return msg.wParam;
    }

    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
       static  HWND   hText;
       static  HWND   hChoice;
       static  RECT   rect;
       
       switch (message)
       {
       case WM_CREATE:
          {

            hText = CreateWindow(  szTextChild,
                                    "nun bist du offiziell ein dummer Mensch!",
                                    WS_CHILD | WS_BORDER,
                                    0, 0, 0, 0,
                                    hWnd,
                                    NULL,
                                    ((LPCREATESTRUCT) lParam) -> hInstance,
                                    NULL);

            hChoice = CreateWindow( szChoice,
                                     "Dumme leute hier Klicken!",
                                     WS_CHILD | WS_VISIBLE,
                                     0, 0, 0, 0,
                                     hWnd,
                                     NULL,
                                     ((LPCREATESTRUCT) lParam) -> hInstance,
                                     NULL);
             return 0;
          }
       case WM_SIZE:
          {
             rect.right  = LOWORD(lParam);
             rect.bottom = HIWORD(lParam);
             
             MoveWindow(hText, rect.right  / 2 - 140,
                               rect.bottom / 2 - 60, 280,120, TRUE);
                               
             MoveWindow(hChoice, rect.right / 2 - 130,
                                 rect.bottom - 30, 260, 22, TRUE);
             return 0;
          }

         case PM_CHECKED:
          {
             if (wParam)
             {
                ShowWindow(hText, SW_SHOW);
                SetWindowText(hWnd, "nun bist du auch dumm!");
             }
             else
             {
                ShowWindow(hText, SW_HIDE);
                SetWindowText(hWnd, "Dumm menschen sind einfach dumm ...");
             }
             return 0;
          }
       case WM_DESTROY:
          {
             PostQuitMessage(0);
             return 0;
          }
       }
       return DefWindowProc(hWnd, message, wParam, lParam);
    }

    LRESULT CALLBACK TextChildProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
       switch (message)
       {

          case WM_PAINT:
          {
             RECT        rect;
             HDC         hDC;
             PAINTSTRUCT ps;
             char        szText[200];
             
             GetClientRect(hWnd, &rect);
             
             hDC = BeginPaint(hWnd, &ps);
             {
                DrawText(hDC, szText, GetWindowText(hWnd, szText, sizeof(szText)),
                              &rect, DT_WORDBREAK | DT_CENTER);
             }
             EndPaint(hWnd, &ps);
             
             return 0;
          }
       }
       
       return DefWindowProc(hWnd, message, wParam, lParam);
    }

    LRESULT CALLBACK ChoiceProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
       switch (message)
       {

          case WM_CREATE:
          {
             long style = GetWindowLong(hWnd, GWL_STYLE);
             SetWindowLong(hWnd, GWL_STYLE, style | WS_DLGFRAME);
             SetWindowLong(hWnd, 0, 0);
             
             return 0;
          }

          case WM_PAINT:
          {
             HDC          hDC;
             PAINTSTRUCT  ps;
             char         szText[100];
             
             hDC = BeginPaint(hWnd, &ps);
             {
                SetBkMode(hDC, TRANSPARENT);
                Rectangle(hDC, 6, 2, 18, 14);
               
                TextOut(hDC, 24, 0, szText, GetWindowText(hWnd, szText, sizeof(szText)));
               
                if (GetWindowLong(hWnd, 0))
                {
                   MoveToEx(hDC, 6, 2, NULL);
                   LineTo(hDC, 17, 13);
                   MoveToEx(hDC, 6, 13, NULL);
                   LineTo(hDC, 17, 2);
                }
             }
             EndPaint(hWnd, &ps);
             
             return 0;
          }

            case WM_LBUTTONDOWN:
          {
             if (LOWORD(lParam) >=  6   &&
                 LOWORD(lParam) <  18   &&
                 HIWORD(lParam) >=  2   &&
                 HIWORD(lParam) <  14)
             {
                SetWindowLong(hWnd, 0, !GetWindowLong(hWnd, 0));
                SendMessage(GetParent(hWnd), PM_CHECKED,
                               GetWindowLong(hWnd, 0), (LPARAM)hWnd);
                InvalidateRect(hWnd, NULL, FALSE);
             }
          }
       }
       
       return DefWindowProc(hWnd, message, wParam, lParam);
    }

    Wenn ihr das deug nun startet seht ihr ein Windows fenster vor euch, das zwei Childfenster in einem hauptfenster anzeigt. wenn ihr das untere Childfenster nun anwählt ensteht ein zweites childfenster auf dem Bildschirm! falls dieses programm bei dir nicht geht, kann es daran liegen das due WinAPI noch nicht installiert hast oder d in den Projekt eigenschaften den zeichensatz noch nicht auf "nicu hatsht festgelegt" umgestellt! fragen kannst du natürlich wie immer im WinAPI bereich stellen!



    Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken



    Weitere Beiträge aus dem Forum Webdesigner's

    Chaosgame - Online (BrowserGame) - gepostet von Snowball am Freitag 20.07.2007



    Ähnliche Beiträge wie "WinAPI - Texte im Child-fenster anzeigen"

    Texte...kreativ und sprachlich elegant - Spence (Montag 03.09.2007)
    Child goes crazy - Vendruxs (Montag 13.11.2006)
    Texte schreiben - Julia (Donnerstag 16.08.2007)
    Destinys Child - Destinys Child (Samstag 20.10.2007)
    teXte - Anonymous (Mittwoch 17.08.2005)
    SINNLOSE TEXTE - ProRipper (Freitag 25.01.2008)
    texte/kurzgeschichten etc. - KleeneMausi (Sonntag 06.05.2007)
    Angry Child - Sir. Stollnik (Donnerstag 22.06.2006)
    geile texte ^^ - Lod (Montag 26.03.2007)
    texte addieren - Moritz (Mittwoch 07.11.2007)