Verfügbare Informationen zu "WinAPI - Texte im Child-fenster anzeigen"
Qualität des Beitrags: 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 16 Jahren, 8 Monaten, 23 Tagen, 12 Stunden, 49 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:14WinAPI - 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)