Neler yeni
Türkiye'nin En Güncel Forum Sitesi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı yada giriş yapmalısınız. Forum üye olmak tamamen ücretsizdir.

C++ Görsel Hesap Makinesi(Windows.h)

ByOnur58

Kayıtlı Üye
MFC Üyesi
  • Üyelik Tarihi
    7 Ocak 2015
  • Mesajlar
    2,113
  • MFC Puanı
    10
  • MFC Seviyesi

Kod:
[CODE]#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);
}
[/CODE]
 
Üst Alt