012
06.04.2004, 19:09 Uhr
RedEagle
|
Ich glaube, ein Fenster ist für nen Anfänger nen bischen zu schwer. Egal, wenn du eins willst, kriegste eins (nicht mit VC++ getestet, aber mit DEV-CPP)
C++: |
#include <windows.h> #include <stdio.h>
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM); //Deklaration der Windows-Nachrichten-Prozedur
int WINAPI WinMain( HINSTANCE hThisInstance, HINSTANCE, PSTR, int nFunsterStil) {
char szName[] = "Fensterklasse"; HBRUSH MyBrush = CreateSolidBrush(RGB(0,150,255)); //Eigene BG-Color WNDCLASS wc; wc.style = CS_HREDRAW | CS_VREDRAW; //CS = Class Style wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hThisInstance; wc.hIcon = LoadIcon(NULL, IDI_WINLOGO); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = MyBrush;//(HBRUSH) COLOR_BACKGROUND; wc.lpszMenuName = NULL; wc.lpszClassName = szName; RegisterClass (&wc); HWND hwnd = CreateWindow (szName, "Fenster-test", WS_OVERLAPPEDWINDOW, 300, 300, 500, 200, NULL, NULL, hThisInstance, NULL); ShowWindow (hwnd, nFunsterStil); UpdateWindow (hwnd); //Nachrichtenschleife MSG msg; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage (&msg); } return msg.wParam; }
//Windows-Nachrichten-Prozedur LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; static HWND hwndButton1, hwndEdit2; switch(message) { case WM_PAINT : hdc = BeginPaint (hwnd, &ps); SetTextColor(hdc, RGB(25 , 25 , 200)); SetBkColor (hdc, RGB(0 , 150, 255)); TextOut(hdc, 20, 20, "Test der WinAPI", 15); //device context, x, y, string, string-Länge TextOut(hdc, 20, 35, "- Button's", 10); TextOut(hdc, 20, 50, "- Edit-Feld", 11); EndPaint (hwnd, &ps); return 0; case WM_CREATE : hwndButton1 = CreateWindow("button", "Knopf 1", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 150, 20, 100, 40, hwnd, (HMENU)1, (HINSTANCE) GetWindowLong (hwnd, GWL_HINSTANCE), NULL); hwndEdit2 = CreateWindow("edit", "Edit-Feld", WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_AUTOVSCROLL, 251, 20, 200, 40, hwnd, (HMENU)2, (HINSTANCE) GetWindowLong (hwnd, GWL_HINSTANCE), NULL); return 0; case WM_COMMAND : switch(LOWORD(wParam)) { case 1 : SetWindowText(hwndEdit2, ""); SendMessage(hwndEdit2, EM_SETREADONLY, true, 0); //break; case 2 : SendMessage(hwndEdit2, EM_SETREADONLY, false, 0); //break; } break; case WM_DESTROY : PostQuitMessage(0); return 0; /*case WM_LBUTTONDOWN : hdc = GetDC(hwnd); char str[50]; sprintf (str, "%i|%i|%i|%i", hwnd, message, wParam, lParam); TextOut (hdc, 20, 20, str, strlen(str)); ReleaseDC(hwnd, hdc); return 0;*/ } return DefWindowProc (hwnd, message, wParam, lParam); }
|
Als Turtorial empfehle ich www.untergrund-spiele.de/tut_window.php3?t_id=389 Da habe ich das auch gelernt (ist sogar für VC++ erklärt) -- MFG RedEagle Dieser Post wurde am 06.04.2004 um 19:10 Uhr von RedEagle editiert. |