<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      在Delphi中定義自己圖標的消息框

      [摘要]應用程序在運行當中經常要輸出各種即時信息,Delphi提供了多種形式的消息對話框可以滿足這些要求,盡管可以使用各種標志定制一個消息框,但仍不能將自己的圖標放在消息框內,也不能修改其標準行為去創建自己...
      應用程序在運行當中經常要輸出各種即時信息,Delphi提供了多種形式的消息對話框可以滿足這些要求,盡管可以使用各種標志定制一個消息框,但仍不能將自己的圖標放在消息框內,也不能修改其標準行為去創建自己的消息框,其實通過調用函數MessageBoxIndirect()就很容易繞過這些明確的限制,這是一個功能很強、易于使用的函數。

      ---- 此函數在WINDOWS單元里面,文件位于Delphi安裝路徑Source\Rtl\Win里面,需要指出的是,Delphi的原代碼中它的返回值類型是BOOL型,而實質上它的返回值應為Integer。修改方法:在WINDOWS單元中找到此函數后,把BOOL改為Integer,共有三處要修改,然后在Delphi安裝路徑Lib中找到WINDOWS.DCU文件,把它改名或者刪除,并把修改后的WINDOWS.PAS源碼復制到Lib路徑中。

      ---- 該函數只有一個參數,類型是TMsgBoxParams,它的結構及說明如下:

      tagMSGBOXPARAMSA = packed record
      cbSize: UINT;
      {數據結構的長度}
      hwndOwner: HWND;
      {所有者窗口句柄}
      hInstance: HINST;
      {應用程序實例句柄}
      lpszText: PAnsiChar;
      {在消息框客戶區內顯示的文本}
      lpszCaption: PAnsiChar;
      {標題欄文本}
      dwStyle: DWORD;
      {確定消息框內按鈕和圖符
      的數量及種類的MB_標志}
      lpszIcon: PAnsiChar;
      {從資源文件中取出的一個
      圖符資源的名字}
      dwContextHelpId: DWORD;
      {指定幫助文本的ID號}
      lpfnMsgBoxCallback: TPRMsgBoxCallback;
      {當用戶按下HELP按鈕時調用的一個回
      調函數}
      dwLanguageId: DWORD;
      {顯示在按鈕內文本的語言定義}
      end;

      ---- 由于直接使用此函數比較復雜,我們可以自定義一個函數來封裝此函數,對它進行簡化,在用法上盡量做到與Delphi的消息框相一致,自定義函數代碼如下:
      function MessageEx
      (lText,lCaption:PChar;
      lStyle:DWord;lIcon:PChar):Integer;
      var
      Msg:TMsgBoxParams;
      begin
      Msg.cbSize:=Sizeof(Msg);
      Msg.hwndOwner:=Application.Handle;
      Msg.hInstance:=hinstance;
      Msg.lpszText:=lText;
      Msg.lpszCaption:=lCaption;
      Msg.dwStyle:=lStyle;
      Msg.lpszIcon:=lIcon;
      Msg.dwContextHelpId:=1;
      Msg.lpfnMsgBoxCallback:=nil;
      Msg.dwLanguageId:=LANG_NEUTRAL;
      Result:=MessageBoxIndirect(Msg);
      end;

      ---- 要想在消息框中顯示自己的圖標,先準備一個裝有圖標的資源文件,加在程序中,如{$R c:\mydir\myres.res},在lStyle參數里除了所需的MB_標志外還要加上MB_USERICON標志,并在最后一個參數里寫上資源文件中圖標的名字,如果不想使用自定義的圖標,可將最后一個參數設為nil。函數的其它用法和返回值的處理與Delphi提供的消息框一樣。
      ---- 強烈建議把自定義函數放在一個單元文件里,并把此文件放在Delphi的搜索路徑如Lib下,以后只需要把此單元加在uses語句里,就可以直接使用自定義函數,非常方便。

      ---- 上述自定義函數在Delphi4、Delphi5里運行通過。


      日韩精品一区二区三区高清