C++ Windows Uygulaması

  • 22
  • (1)
  • (5)
  • 11 Haz 2017

Dev-Cpp programında main.cpp dosyası içerisinde pencere oluşturan bir uygulama programlayabilirsiniz. windows.h kütüphanesini include komutu ile dosyaya ekleyin. C++ üzerinde bu tarz uygulamaların doğrudan Windows kütüphaneleri ile oluşturulması oldukça karmaşık olabilir.

Aşağıdaki kodu olduğu gibi kullanabilirsiniz.


#include <windows.h>

// Pencereden alınan her yanıt WndProc metodu içinde denetlenir
// Oluşturulma, kapatma, tıklama vb...
LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) {
	switch(Message) {
		case WM_CREATE: { // Pencere oluşturulma işlemi
		    // Pencere içerisinde bir tuş tanımlanmaktadır
			HWND hwndButton = CreateWindowEx(WS_EX_CLIENTEDGE,
			    "BUTTON", "Tıkla",
			    WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,
			    10, 10, 100, 20, hwnd, NULL, NULL, NULL);
			break;
		}
		case WM_COMMAND:{
			switch (HIWORD(wParam))
			{
				case BN_CLICKED: // Tuşa tıklanma işlemi
					MessageBox(NULL, "Tıklandı", "Mesaj Kutusu", MB_OK);
					break;
				default:
					break;
			}
			break;
		}
		case WM_DESTROY: {
			PostQuitMessage(0);
			break;
		}
		default:
			return DefWindowProc(hwnd, Message, wParam, lParam);
	}
	return 0;
}

// Normalde kullanılan main metodu yerine WinMain kullanılır
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
	WNDCLASSEX wc;
	HWND hwnd;
	MSG msg;

	memset(&wc,0,sizeof(wc));
	wc.cbSize = sizeof(WNDCLASSEX);
	wc.lpfnWndProc = WndProc;
	wc.hInstance = hInstance;
	wc.hCursor = LoadCursor(NULL, IDC_ARROW);
	
	wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
	wc.lpszClassName = "WindowClass";
	wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
	wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

	if(!RegisterClassEx(&wc)) {
		MessageBox(NULL, "Pencere sınıfı hatası!","Hata!",MB_ICONEXCLAMATION|MB_OK);
		return 0;
	}

    // Pencere burada tanımlanmaktadır
	hwnd = CreateWindowEx(WS_EX_CLIENTEDGE, "WindowClass", "Windows Uygulamam", 
		WS_VISIBLE | WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT, CW_USEDEFAULT, 480, 320, // Genişlik 480 yükseklik 320 piksel
		NULL, NULL, hInstance, NULL);

	if(hwnd == NULL) {
		MessageBox(NULL, "Pencere oluşturulamadı!", "Hata!", MB_ICONEXCLAMATION | MB_OK);
		return 0;
	}
	while(GetMessage(&msg, NULL, 0, 0) > 0) {
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return msg.wParam;
}

Pencere ve tuşu tanımlamak için kullanılan CreateWindowEx metodu yerine CreateWindow metodu da kullanılabilir. Ancak WS_EX_CLIENTEDGE parametresi olmaksızın kullanılmalıdır.


hwnd = CreateWindow("WindowClass", "Windows Uygulamam", 
	WS_VISIBLE | WS_OVERLAPPEDWINDOW,
	CW_USEDEFAULT, CW_USEDEFAULT, 480, 320, // Genişlik 480 yükseklik 320 piksel
	NULL, NULL, hInstance, NULL); 

İlişkili İçerikler

C++ dili ile ilk programınızı yazmak için ücretsiz olan Dev-Cpp uygulamasını indirip kurabilirsiniz. Dev-Cpp kendi editörü ve derleyicisi ile yazdığınız kodları rahatlıkla çalıştıracaktır.

Paylaşın
Etiket Bulutu