?Windows API windowsun windows.h ve diger bazi kütüphanelerini kullanarak C kodlama ile yapilan bir programlama serüvenidir.Serüvendir.Çünkü C++ ve C# gibi hazir yapilara sahip degildir.Gerçi biz kod yazarken C++ kodalarini da araya sikistiracagiz ama yine de temel olarak C kodlari olacak.Simdi bir iki konudan bahsedelim.Windows altinda programlar kendi yapilari ve bu yapilarin olusturdugu türlü mesajlarin islenmesi metoduyla çalisir.Yani bir yapi kurarsiniz ve bu yapinin bir mesaj göndermesini beklersiniz.Bu mesajlara göre programinizi sekillendirisiniz.
Basit bos bir pencere olusturmak için iki tane fonsiyon kullanacagiz.Bunlari kullanmamiz için ilk önce windows.h kütüphanemizi eklememiz gerekecek.(#include “windows.h”) Kullanacagimiz fonksiyonlar:
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE HPrevInstance,LPSTR lPCmdLine,int nShowCmd);
Bu WndProc fonksiyonuna buradan ,WinMain fonksiyonuna buradan ulasabilirsiniz.Biz tamamen kodumuz yazalim ve ne ise yaradigini yavas yavas anlatalim.
#include "windows.h"
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE HPrevInstance,LPSTR lPCmdLine,int nShowCmd)
{
WNDCLASS wc;
MSG msg;
HWND hWnd;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hbrBackground = (HBRUSH)GetStockObject(LTGRAY_BRUSH);
wc.hCursor = LoadCursor(NULL,IDC_ARROW);
wc.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wc.hInstance = hInstance;
wc.lpfnWndProc = WndProc;
wc.lpszClassName = "temel";
wc.lpszMenuName = NULL;
wc.style = CS_VREDRAW | CS_HREDRAW;
RegisterClass(&wc);
hWnd = CreateWindow("temel",
"Ilk Ornek",
WS_CAPTION | WS_SYSMENU,
100,
100,
350,
300,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(hWnd,SW_SHOW);
UpdateWindow(hWnd);
while(GetMessage(&msg,0,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd,message,wParam,lParam);
}
}





0 Comments.