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

Kurtbeyi

Misafir Editör
Katılım
5 Şubat 2022
Mesajlar
501
Tepkime puanı
44
Konum
istanbul
Cinsiyet
  1. Bay
Takım
Fenerbahçe
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);
}
 
Benzer konular Forum Tarih
Kurtbeyi C ve C++ 2 193
Kurtbeyi C ve C++ 1 192
Kurtbeyi C ve C++ 2 173
Kurtbeyi C ve C++ 1 192
Kurtbeyi C ve C++ 1 153

Benzer konular

İçerik sağlayıcı "paylaşım" sitelerinden biri olan Harbimekan.Com Forum, Eğlence ve Güncel Paylaşım Platformu Adresimizde 5651 Sayılı Kanun’un 8. Maddesine ve T.C.K’nın 125. Maddesine göre TÜM ÜYELERİMİZ yaptıkları paylaşımlardan sorumludur. Harbimekan.Com sitesindeki konular yada mesajlar hakkında yapılacak tüm hukuksal Şikayetler için info@harbimekan.com yada iletişim sayfası üzerinden iletişime geçilmesi halinde ilgili kanunlar ve yönetmelikler çerçevesinde en geç 3 Gün (72 Saat) içerisinde Forum yönetimi olarak tarafımızdan gereken işlemler yapılacaktır.

Bu Site, Bilim ve Sağlık Haber Ajansı Üyesidir.

Yığıntı - 8kez - kaynak mağazam - Uğur Ağdaş