Kurtbeyi
Misafir Editör
Kod:
#include <Windows.h> //windows apisini kullanmak için
/*__Tanımlamalar__*/
#define defTopla 100
#define defCikar 101
#define defCarp 102
#define defBol 103
#define defTemizle 104
#define defMetin1 105
#define defMetin2 106
HWND hMetin1;
HWND hMetin2;
HWND hTopla;
HWND hCikar;
HWND hCarp;
HWND hBol;
HWND hTemizle;
**** hesapla(char *a, char *b);
int kontrol = 0;
int sayi1, sayi2, sonuc;
char cSonuc[50];
const char Classismi[] = "pencere";
// gelen mesajları işleyen kısım
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
int wmId;
char yazi[50], yazi2[50];
switch(msg)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
switch (wmId)
{
//Toplama Butonuna Basıldığında:
case defTopla:
SendDlgItemMessage(hwnd, defMetin1, EM_GETLINE, (WPARAM)0, (LPARAM)yazi);
SendDlgItemMessage(hwnd, defMetin2, EM_GETLINE, (WPARAM)0, (LPARAM)yazi2);
kontrol = 1;
hesapla(yazi,yazi2);
break;
//Çıkarma Butonuna Basıldığında:
case defCikar:
SendDlgItemMessage(hwnd, defMetin1, EM_GETLINE, (WPARAM)0, (LPARAM)yazi);
SendDlgItemMessage(hwnd, defMetin2, EM_GETLINE, (WPARAM)0, (LPARAM)yazi2);
kontrol = 2;
hesapla(yazi,yazi2);
break;
//Çarpma Butonuna Basıldığında:
case defCarp:
SendDlgItemMessage(hwnd, defMetin1, EM_GETLINE, (WPARAM)0, (LPARAM)yazi);
SendDlgItemMessage(hwnd, defMetin2, EM_GETLINE, (WPARAM)0, (LPARAM)yazi2);
kontrol = 3;
hesapla(yazi,yazi2);
break;
//Bölme Butonuna Basıldığında:
case defBol:
SendDlgItemMessage(hwnd, defMetin1, EM_GETLINE, (WPARAM)0, (LPARAM)yazi);
SendDlgItemMessage(hwnd, defMetin2, EM_GETLINE, (WPARAM)0, (LPARAM)yazi2);
kontrol = 4;
hesapla(yazi,yazi2);
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
break;
case WM_CLOSE:
MessageBox(NULL," => Lavara123","Hoşçakalın:",64 | 0);
DestroyWindow(hwnd);//pencereyi kapat, WM_DESTROY'u tetikle -> DestroyWindow(ana_pencere_değişkenimiz);
break;
//WM_DESTROY tetiklenirse:
case WM_DESTROY:
MessageBox(NULL," => Lavara123 => .d","Birdaha Bekleriz:",48 | 0);
PostQuitMessage(0);//Çıkış Yap(programı kapat)
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
//Pencere özelliklerini belirten bir sınıf değişkeni tanımlanıyor
WNDCLASSEX w;
//aşağıda tanımlamasını yapacağımız pencere özellikleri içeren değişken
HWND hwnd;
MSG Msg;
//Pencere özellikleri belirtiliyor:
w.cbSize = sizeof(WNDCLASSEX);
w.style = 0;
w.lpfnWndProc = WndProc;
w.cbClsExtra = 0;
w.cbWndExtra = 0;
w.hInstance = hInstance;
w.hIcon = LoadIcon(NULL, IDI_APPLICATION);
w.hCursor = LoadCursor(NULL, IDC_ARROW);
w.hbrBackground = (HBRUSH)(COLOR_WINDOW);
w.lpszMenuName = NULL;
w.lpszClassName = Classismi;
w.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
if(!RegisterClassEx(&w))//Eğer w sınıfının Kaydı Yapılamadı ise:
{
MessageBox(NULL, "Pencere Tanımlama Hatası!", "HATA!", MB_ICONEXCLAMATION | MB_OK);
return 0;
}
//Pencere Oluşturma:
hwnd = CreateWindow(Classismi,"Hesapm Makinesi",//class adı, pencere başlığı,
WS_SYSMENU,//pencere sitili WS_SYSMENU(sadece çıkış iconu olan,büyütülemeyen windows pencere sitili)
200, 200,//kordinatları x,y
175, 115,//pencere genişlik,yüksekliği
NULL, NULL,
hInstance,
NULL);
// +(topla) butonunu oluşturma:
hTopla = CreateWindow("BUTTON", "+",
WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,
90, 10,
30, 30,
hwnd, (HMENU)defTopla,
hInstance,
NULL);
// -(çıkarma) butonunu oluşturma:
hCikar = CreateWindow("BUTTON", "-",
WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,
130, 10,
30, 30,
hwnd, (HMENU)defCikar,
hInstance,
NULL);
// *(çarpma) butonunu oluşturma:
hCarp = CreateWindow("BUTTON", "x",
WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,
90, 50,
30, 30,
hwnd, (HMENU)defCarp,
hInstance,
NULL);
// /(bölme) butonunu oluşturma:
hBol = CreateWindow("BUTTON", "/",
WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,
130, 50,
30, 30,
hwnd, (HMENU)defBol,
hInstance,
NULL);
// 1.Metin Kutusu oluşturma:
hMetin1 = CreateWindow("EDIT", "",
WS_CHILD | WS_VISIBLE | WS_BORDER | ES_NUMBER,
10, 10,
70,30,
hwnd, (HMENU)defMetin1, GetModuleHandle(NULL),
NULL);
// 2.Metin Kutusu oluşturma:
hMetin2 = CreateWindow("EDIT", "",
WS_CHILD | WS_VISIBLE | WS_BORDER | ES_NUMBER,
10, 50,
70,30,
hwnd, (HMENU)defMetin2, GetModuleHandle(NULL),
NULL);
//1.Metin Kutusunun Max Albileceği Karakter Sayısını 4 yapıyoruz:
SendDlgItemMessage(hwnd, defMetin1,EM_SETLIMITTEXT,(WPARAM) 4,(LPARAM)0);
//2.Metin Kutusunun Max Albileceği Karakter Sayısını 4 yapıyoruz:
SendDlgItemMessage(hwnd, defMetin2,EM_SETLIMITTEXT,(WPARAM) 4,(LPARAM)0);
ShowWindow(hwnd, SW_SHOW);//penceremizi görünür yapıyoruz(SW_HIDE olusa görünez)
UpdateWindow(hwnd);
// mesajların alınması ve ayrılması
while(GetMessage(&Msg, NULL, 0, 0) > 0)
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;
}
**** hesapla(char *a, char *b)
{
char *mBaslik;
sayi1 = atoi(a);//atoi yazıyı sayıya çevirir -> atoi(string);
sayi2 = atoi(b);
if(kontrol == 1)
{
sonuc = sayi1 + sayi2;
mBaslik = "Toplama Sonucu:";
}
if(kontrol == 2)
{
sonuc = sayi1 - sayi2;
mBaslik = "Çıkarma Sonucu:";
}
if(kontrol == 3)
{
sonuc = sayi1 * sayi2;
mBaslik = "Çarpma Sonucu:";
}
if(kontrol == 4)
{
if(sayi2 == 0)
{
MessageBox(NULL,"0'a Böünemez!!","DIİKKAT!", MB_ICONERROR);
mBaslik = "Hata Sonucu:";
}
else
{
sonuc = sayi1 / sayi2;
mBaslik = "Bölme Sonucu:";
}
}
//sayıyı yazıya çevir(çünkü MessageBox string değişkeni ister)
_itoa(sonuc, cSonuc, 10); //_itoa(sayı, aktarılacağı_string, max_kullanabileceği alan);
MessageBox(NULL, cSonuc, mBaslik, MB_OK);
}