Splash Bitmap oluşturmak

C, C++ ve C++ Builder ile ilgili konuları buraya yazabilirsiniz.
Cevapla
swordholder
Üye
Mesajlar: 39
Kayıt: 15 Eki 2006 10:58

Splash Bitmap oluşturmak

Mesaj gönderen swordholder »

Arkadaslar program yeni acilirken daha yuklenme suresinde kullaniciya splash bitmap gosterme olayindan haberi olan varmi?
Nasil programin ana processinin onune gecip bir tane resim cizdirilebilinir.
Bu resim herhangi formatta olabilir onemli degil onemli olan sadece programin RAM e yuklenme suresince gorunsun tipki WORD, Adobe Reader deki gibi mesela. Cunku ben bir program yaptim veri tabaniyla calisan, veri tabaninin boyutu asiri buyuk olunca BDE taaa o verilerin,tablolarin hepsini RAM+Sanal bellek e yukleyince aradan 5-10 dakika geciyor cok sikici oluyor. Yardimci olabilecek varmi???
Kullanıcı avatarı
mikser
Üye
Mesajlar: 120
Kayıt: 30 Haz 2003 09:54
Konum: Ankara

Mesaj gönderen mikser »

Eğer Splash Form yapmak istiyorsan

C:\Program Files\Borland\CBuilder6\Examples\DBTasks\MastApp

bu örneğin içinde Splash form örneği var. Projeyi açtıktan sonra
Project->View Source menüsünden Splash formun nasıl yapıldığını görebilirsin.
Kullanıcı avatarı
SHURZAN
Üye
Mesajlar: 73
Kayıt: 06 Eki 2007 05:34
Konum: İstanbul

Mesaj gönderen SHURZAN »

Splash ben karşılama ekranı diyorum
Nasıl yapılacağı kullanıcıya bırakılmıştır ancak bu pencerenin ana pencere ile birlikte aktif olmaması hemen ekrana gelmemesi biz istediğimizde Görünmeli işi bitincede yok olması gerekir.
Bunun için projenin ana dosyasında ikinci form (karşılama ekranı için olan form) Create (yaratma) yapılmaması gerekir şimdi ikitane formumuz olduğunu varsayalım ana dosyamızın kodlama şekili şöyledir

Kod: Tümünü seç

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
	try
	{
		Application->Initialize();
		Application->CreateForm(__classid(TForm1), &Form1);
		Application->CreateForm(__classid(TForm2), &Form2);
		Application->Run();
	}
	catch (Exception &exception)
	{
		Application->ShowException(&exception);
	}
	catch (...)
	{
		try
		{
			throw Exception("");
		}
		catch (Exception &exception)
		{
			Application->ShowException(&exception);
		}
	}
	return 0;
}
görüldüğü gibi Form2 nesnemizde yaratılıyor

Kod: Tümünü seç

Application->CreateForm(__classid(TForm2), &Form2);
Ama biz Karşılama ekranımızı kendimiz yaratıp yok etmeliyiz bunun için
Karşılama ekranımız için "Project->Option.." menüsünden projemizin ayarını yapıyoruz "Forms" bölümünde "Auto-create forms:" başlığı altında her iki formumuzuda göreceğiz buradan Form2 formumuzu " > " ile "Available" kısmına aldığımızda bulder bizim için ana dosyamızda aşağıdaki kodu yazmayacaktır

Kod: Tümünü seç

Application->CreateForm(__classid(TForm2), &Form2);
Şimdi biz formumuzu kendimi yaratıp yok edeceğiz ancak ana dosyamız Form2 nesnemizin header dosyasını tanımaz daha doğrusu TForm2 sınıfımızı ve Form2 Pointerimizi tanımaz onu yukarıda dosya faaliyet alanında form2.h dosyamızı include etmeliyiz #include "form2.h"
şimdi Form2 nesnemizi yaratıp işi bitincede yok edelim.
Bunu dinamik olarak yaratacağız

Kod: Tümünü seç

Form2 = new TForm2(Application);
nesnemizi yarattık ama bir Sow etmedikçe görünmeyecektir

Kod: Tümünü seç

Form2->Show();
Form2 de ister bir resim ister başka nesneleri diğer formlarda çalıştığınız gibi tasarlıyabilirsiniz bu tamamen size kalmış.
Peki Form2 ne zaman kapanacak?
Çok kolay Form1 Formunuz ne zaman ekrana gelecekse hemen öncesinde veya belli süre beklendikten sonra aşağıdaki örnekte 3 sn.

Kod: Tümünü seç

Form2 = new TForm2(Application);
Application->CreateForm(__classid(TForm1), &Form1);
Sleep(3000);
Form2->Hide();
Application->Run();
if(Form2 != NULL)
 delete Form2;
Şimdi kodun tamamını yazalım

Kod: Tümünü seç

#include "form2.h"
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
	try
	{
	Form2 = new TForm2(Application);  //Nesnemiz yaratılıyor
                Application->CreateForm(__classid(TForm1), &Form1);
                Sleep(3000);                // 3 sn. bekleme yapılıyor
                Form2->Hide();            // Önce gizleniyor
                Application->Run();      // Ana formumuz çalıştırılıyor
                if(Form2 != NULL)        //Herhangi bir aksilik yoksa
                delete Form2;             //Nesnemizi burada yok ediyoruz
	}
	catch (Exception &exception)
	{
		Application->ShowException(&exception);
	}
	catch (...)
	{
		try
		{
			throw Exception("");
		}
		catch (Exception &exception)
		{
			Application->ShowException(&exception);
		}
	}
	return 0;
}


Başarılar........
Cevapla