• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Uzupełnianie okna c++

Cloud VPS
0 głosów
711 wizyt
pytanie zadane 2 kwietnia 2019 w C i C++ przez Sic Dyskutant (8,510 p.)

Witam

Chciałbym zadać dosyć "głupie" pytanie dotyczące uzupełniania okien w WinApi. Oto mój dotychczasowy kod:

#include <windows.h>
#include <iostream>

LPCSTR szClassName = "Moje okno Windows";
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); // definicja zostanie dodana poźniej
MSG msg;

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE vPrevINSTANCE, LPSTR lpszCmdLine, int nCmdShow)
{
	WNDCLASSEX winClass; // zmienna rekordowa
	HWND hWndMain;
	
// uzupełnienie danych okna na bazie zmiennych struktury !
	winClass.cbSize = sizeof(WNDCLASSEX);
	winClass.cbClsExtra = 0;
	winClass.cbWndExtra = 0;
	winClass.hInstance = hInst;
	winClass.lpszClassName = szClassName;
	winClass.lpszMenuName = NULL;
	winClass.hCursor = LoadCursor(NULL, IDC_WAIT); // kursorem będzie klepsydra (niech czeka, zastosowanie malipulacji)
	winClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
	winClass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
	winClass.hbrBackground = (HBRUSH)(COLOR_3DSHADOW + 1);
	winClass.style = CS_HREDRAW | CS_VREDRAW; // zmiana rozmiarów okna w pionie i poziomie
	winClass.lpfnWndProc = WndProc; // (wskaźnik na procedurę okna), odpowiedzialny za obsługę komunikatówdef
	
	if (!RegisterClassEx(&winClass))
	{
		MessageBox(NULL, "Błąd rejestracji okna", "Komunikat", MB_OK | MB_ICONEXCLAMATION);
	}

	hWndMain = CreateWindowEx(
		WS_EX_CLIENTEDGE,
		szClassName,
		"Okno glowne",
		WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		300, 200,
		NULL,
		NULL,
		hInst,
		NULL);

	ShowWindow(hWndMain, nCmdShow);
	UpdateWindow(hWndMain);

	//Rezultatem funkcji GetMessage jest wartość 0 jeżeli z kolejki pobrany został komunikat WM_QUIT.Rezultat o wartości - 1 oznacza błąd.
	while (GetMessage(&msg, NULL, 0, 0) > 0) 
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}

	//InvalidateRect(hWndMain, NULL, FALSE);
	//SetWindowText( hWndMain, szClassName);

	return msg.wParam;

	system("pause");
	return 0;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	switch (msg)
	{
	case WM_CLOSE:
		DestroyWindow(hWnd);
		break;
	case WM_DESTROY:
		PostQuitMessage(0);
		break;
	default: return DefWindowProc(hWnd, msg, wParam, lParam);
	}

	return 0;
}

Powoduje wywołanie pustego okna z nowoczesną ramką windowsa. Jednak chciałbym uzupełnić jego zawartość o tekst, bądź obraz (np. jpeg). Jednak nie wiem gdzie miałbym umieścić te dane jako dodatkowa funkcja czy w inny sposób? Robię to pierwszy raz, a informacje dotyczą zazwyczaj tworzenia okna a nie jego uzupełnienia o dodatkowe elementy.

Moje pytania to:

1. Jakich funkcji powinienem użyć chcąc dodać informacje do okna w VS ?

2. Czy wystarczy wrzucić dodatkową funkcję do "int WINAPI WinMain(...)" ?

1 odpowiedź

+1 głos
odpowiedź 2 kwietnia 2019 przez j23 Mędrzec (195,240 p.)
wybrane 3 kwietnia 2019 przez Sic
 
Najlepsza

Komunikat WM_PAINT.

Podobne pytania

0 głosów
1 odpowiedź 348 wizyt
pytanie zadane 10 stycznia 2019 w C i C++ przez Sic Dyskutant (8,510 p.)
0 głosów
0 odpowiedzi 671 wizyt
pytanie zadane 11 stycznia 2022 w C i C++ przez MKolaj15 Bywalec (2,270 p.)
0 głosów
1 odpowiedź 315 wizyt
pytanie zadane 11 czerwca 2016 w C i C++ przez timrh Mądrala (6,010 p.)

93,487 zapytań

142,423 odpowiedzi

322,773 komentarzy

62,908 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...