Delphi – Promena ikone u MessageBox-u

U ovom prilogu prikazaฤ‡emo vam kako da promenite ikonu koja se prikazuje u MessageBox-u koristeฤ‡i Windows API funkciju „MessgeBoxIndirect„. Ovu API funkciju ฤ‡emo ugraditi u proceduru nazvanu „MojMessageBox“, koja ฤ‡e nam omoguฤ‡iti prikaz MessageBox-a sa ikonicom naลกe aplikacije.

procedure MojMessageBox
(Text: String); 
var
MsgPars: TMsgBoxParams;
begin
with MsgPars do
begin
cbSize := SizeOf(MsgPars);
hwndOwner := Sysinit.HInstance;
hInstance := Sysinit.hInstance; //izvor
lpszText := PChar(Text); //ukoliko koristite
Delphi 1, morate koristiti StrPCopy.
lpszCaption := 'About';
dwStyle := MB_OK or MB_USERICON;
lpszIcon := 'MAINICON'; //ikona vaลกe
aplikacije, ugraฤ‘ena u *.exe
dwContextHelpId := 0; // kontekst help
lpfnMsgBoxCallback := nil;
dwLanguageId := LANG_NEUTRAL;
end; //with
MessageBoxIndirect(MsgPars);
end;

Sada ovu proceduru moลพete koristiti u event handler-u, kao na primer:

procedure TForm1.Button1Click(Sender: TObject); 
begin
MojMessageBox('Primer promene podrazumevane MessageBox ikone');
end;

Obratite paลพnju na to, da u MojMessageBox proceduri, smo koristili sledeฤ‡u deklaraciju:

hwndOwner := Sysinit.HInstance; 
hInstance := Sysinit.hInstance;

Da bi izbegli moguฤ‡u konfuziju u koriลกฤ‡enju dve hinstance varijable, koristimo *with* naredbu. Jedna varijabla je hinstance ฤlan TMsgBoxParams , a druga pripada aplikaciji koja je definisana i inicijalizovana u Sysinit unit-u. Obratite paลพnju na to, da objektni Paskal nije osetljiv na veliฤinu slova (mala-velika: hInstance i HInstance znaฤe isto). „lpszIcon“ ฤlan TMsgBoxParams podatka predstavlja naziv kompajlirane ikone.

Pratite Krstaricu na www.krstarica.com