x-kom hosting

[Rozwiązany][C++] WinApi gdzie kontrolki?

Turbos
utworzono
utworzono (edytowane)

Wyjdę na idiotę. Ale kto pyta nie błądzi.

Umiem programować pod konsole chciałbym ruszyć z WinAPI (Qt4 jeszcze zbyt pokręcone jak dla mnie).

Znalazłem fajny kod WinAPI czystego okna w internecie o taki

#include <windows.h>#include <iostream> #include <conio.h> #include <windows.h>#include <dos.h>#include <string.h>// Tutaj umieszczamy nazwę klasy, wg której powstanie nasze okno// Jest to zmienna globalna.//--------------------------------------------------------------char ClassName[ ] = "Baza danych";// Procedura obsługująca wiadomości dla okna, wywoływana przez// MS-Windows przy okazji różnych zdarzeń, które należy obsłużyć//--------------------------------------------------------------LRESULT CALLBACK WndProc(HWND h, UINT uMsg , WPARAM wP, LPARAM lP){  if(uMsg == WM_DESTROY)  {	PostQuitMessage(0); return 0;  }  else return DefWindowProc(h,uMsg,wP,lP);}// W Windows główna funkcja, od której uruchamiany jest program,// nazywa się WinMain zamiast main.//--------------------------------------------------------------int WINAPI WinMain (HINSTANCE hinst,					HINSTANCE hprevinst,					LPSTR	 cmdLine,					int	   cmdShow){  WNDCLASSEX wc;  // struktura klasy okna  MSG		ms;  // przechowuje wiadomości aplikacji  HWND	   h;   // Uchwyt naszego okna// Ustawiamy kolejne pola struktury klasy okna  wc.cbSize		= sizeof(WNDCLASSEX);  wc.style		 = CS_HREDRAW | CS_VREDRAW;  wc.lpfnWndProc   = WndProc;  wc.cbClsExtra	= wc.cbWndExtra = 0;  wc.hInstance	 = hinst;  wc.hbrBackground = (HBRUSH) COLOR_WINDOW;  wc.lpszMenuName  = NULL;  wc.lpszClassName = ClassName;  wc.hIcon		 = wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);  wc.hCursor	   = LoadCursor(NULL, IDC_ARROW);// Rejestrujemy klasę okna w Windows. Jeśli się to nie uda, kończymy program  if(!RegisterClassEx(&wc)) return 0;// Gdy klasa jest zarejestrowana, tworzymy na jej podstawie okno  h = CreateWindowEx(0,					  // dodatkowe style okna, 0 oznacza ich brak					 ClassName,			  // adres tablicy char z nazwą klasy					 "Baza danych",		 // adres łańcucha z napisem tytułowym okna					 WS_OVERLAPPEDWINDOW,	// styl okna					 CW_USEDEFAULT,		  // współrzędna X lewego górnego narożnika okna					 CW_USEDEFAULT,		  // współrzędna Y lewego górnego narożnika okna					 732,					// szerokość okna w pikselach, również może być CW_USEDEFAULT					 491,					// wysokość okna w pikselach, również może być CW_USEDEFAULT					 0,					  // uchwyt nadrzędnego okna, jeśli istnieje					 0,					  // uchwyt menu, jeśli istnieje					 hinst,				  // uchwyt programu, który korzysta z okna					 0					   // adres dodatkowych danych					 );// Utworzone okno wyświetlamy na ekranie  ShowWindow(h, cmdShow);{   	int GetWindowText	( HWND hWnd,				   LPTSTR lpString,				   int nMaxCount				   );}  UpdateWindow(h);// Rozpoczynamy pętlę obsługi wiadomości napływających do naszego okna.  while(GetMessage(&ms, NULL, 0, 0))  {	TranslateMessage(&ms);	DispatchMessage(&ms);  }// zwracamy wartość umieszczoną w polu wParam ostatniej wiadomości  return ms.wParam;}

W którym miejscu wstawić np. kontrolkę EDIT ? Nigdy tego nie umiałem zrozumieć gdzie się te kontrolki wstawia.

tom300
komentarz
komentarz

Kontrolki można wstawiać zaraz po stworzeniu okna a najlepiej kiedy przychodzi komunikat WM_CREATE do procedury obsługi komunikatów (czyli WndProc w Twoim przypadku). Oczywiście możesz je dawać w osobnych funkcjach itp. jedynym warunkiem jest to żeby okno było już stworzone, czyli po funkcji UpdateWindow ;)

Btw. jeżeli chcesz się pozbyć kontrolki z okna to do tego służy funckja DestroyWindow(uchwyt kontrolki).

Turbos
komentarz
komentarz

Dzięki za informację ;] no to teraz zacznę tworzyć coś porządnego ;] bo wiem gdzie co wsadzać.

Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!

Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona wykorzystuje pliki cookies w celu prawidłowego świadczenia usług i wygody użytkowników. Warunki przechowywania i dostępu do plików cookies możesz zmienić w ustawieniach przeglądarki.