C++ Windows Uygulaması
- 255
- (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);