C++ windows.h Vista/Win7 Stili

lavara123

Katılımcı Üye
29 Eki 2013
368
0
NULL
C++ Windows.h Vista Stili

Merhaba Arkadaslar.Windows.h kütüphanesinde bir program yapalım(sayının karesini alma)

kodlara geçelim:
Kod:
#include <Windows.h> //windows apisini kullanmak için

#define ID_DUGME 100
#define ID_DUGME2 101
#define ID_TEXT 102

HWND hdugme;
HWND hdugme2;
HWND hmetin;
const char Classismi[] = "pencere";

// gelen mesajları işleyen kısım
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
int wmId;
int sayi;
char yazi[50];

switch(msg)
{
case WM_COMMAND:
wmId = LOWORD(wParam);

switch (wmId)
{
case ID_DUGME:
//birinci düğmeye basıldığında yapılacak işlemler
SendDlgItemMessage(hwnd, ID_TEXT,EM_GETLINE,(WPARAM) 0,(LPARAM)yazi);
sayi = atoi(yazi);
sayi = sayi*sayi;
itoa(sayi, yazi, 10);
MessageBox(NULL,yazi,"bulunan sonuç",MB_OK);
break;

case ID_DUGME2:
//ikinci düğmeye basıldığında yapılacak işlem
SendMessage(hmetin, WM_SETTEXT, 0,(LPARAM)" ");
break;

default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
break;

case WM_CLOSE:
DestroyWindow(hwnd);
break;

case WM_DESTROY:
PostQuitMessage(0);
break;

default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASSEX w; //aşağıda tanımlamasını yapacağımız pencere özellikleri içeren değişken
HWND hwnd;
MSG Msg;

//birinci adım: Pencere özelliklerini belirten bir sınıf değişkeni tanımlanıyor
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 Kayıt Tamamalanmadı ise:
{
MessageBox(NULL, "Pencere tanımlama hatası!", "Hata!", MB_ICONEXCLAMATION | MB_OK); return 0;
}

// ikinci adım pencere oluşturma
hwnd = CreateWindow(Classismi,"Sayı Giriniz",//class adı, pencere başlığı,
	WS_OVERLAPPEDWINDOW,//pencere sitili WS_OVERLAPPEDWINDOW(standart windows pencere sitili)
	200, 200,//kordinatları x,y
	350, 125,//pencere genişlik,yüksekliği
	NULL, NULL,
	hInstance,
	NULL);

hdugme = CreateWindow("BUTTON","Karesini Al",//class adı, buton yazısı,
	WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,//buton sitili
	220,10,//kordinatları x,y
	100,30,//buton genişlik,yüksekliği
	hwnd, (HMENU) ID_DUGME,//hangi pencerede bulunacağı, tıklandığında etkileyeceği
	hInstance,
	NULL);

hdugme2 = CreateWindow("BUTTON", "Temizle",//class adı, buton yazısı,
	WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,//buton sitili
	220,50,//kordinatları x,y
	100,30,//buton genişlik,yüksekliği
	hwnd, (HMENU) ID_DUGME2,//hangi pencerede bulunacağı, tıklandığında etkileyeceği
	hInstance,
	NULL);

hmetin = CreateWindow("EDIT", "",//class adı, textbox yazısı,
	WS_CHILD | WS_VISIBLE |WS_BORDER| ES_NUMBER,//textbox sitili
	10, 10,//kordinatları x,y
	200, 30,//textbox genişliği,yüksekliği
	hwnd, (HMENU)ID_TEXT,GetModuleHandle(NULL),
	NULL);

SendDlgItemMessage(hwnd, ID_TEXT,EM_SETLIMITTEXT,(WPARAM) 4,(LPARAM)0);
ShowWindow(hwnd, SW_SHOW);//penceremizi görünür yapıyoruz
UpdateWindow(hwnd);

// üçüncü adım: mesajların alınması ve ayrılması
while(GetMessage(&Msg, NULL, 0, 0) > 0)
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;
}
yukardaki kodu derleyip çalıştırdığımızda aşağıdaki gibi bir stil olur:
x8BJNn.jpg


gelin bu programı aşağıdaki resimde görünen vista stili ile yapalım:
xAapyB.jpg


ilk önce projemizin bulunduğu dizine aşağıdaki Vista_Stilim.xml dosyasını oluşturup atıyoruz:
Kod:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
   version="1.0.0.0"
   processorArchitecture="X86"
   name="Microsoft.Winweb.VistaStilim"
   type="win32"
/>
<description>.NET control deployment tool</description>
<dependency>
   <dependentAssembly>
     <assemblyIdentity
       type="win32"
       name="Microsoft.Windows.Common-Controls"
       version="6.0.0.0"
       processorArchitecture="X86"
       publicKeyToken="6595b64144ccf1df"
       language="*"
     />
   </dependentAssembly>
</dependency>
</assembly>

sonra Visual Studio'da Projemiz açıkken Alt+F7 yapıyoruz ve Aşağıdaki gibi sırasıyla yapıyoruz:
eW5dD4.jpg

ve derleyip çalıştırıyoruz o Vista Stiline Ulaşıyoruz :)

-->> Ama .xml dosyasını entegere ettikten sonra kare kökünü almıyor onu bende anlamadım .d
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.