在Delphi中定义自己图标的消息框
点击次数:50 次 发布日期:2008-11-09 08:39:50 作者:源代码网
|
源代码网推荐 源代码网推荐 ---- 此函数在WINDOWS单元里面,文件位于Delphi安装路径SourceRtlWin里面,需要指出的是,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:mydirmyres.res},在lStyle参数里除了所需的MB_标志外还要加上MB_USERICON标志,并在最后一个参数里写上资源文件中图标的名字,如果不想使用自定义的图标,可将最后一个参数设为nil。函数的其它用法和返回值的处理与Delphi提供的消息框一样。 源代码网推荐 ---- 强烈建议把自定义函数放在一个单元文件里,并把此文件放在Delphi的搜索路径如Lib下,以后只需要把此单元加在uses语句里,就可以直接使用自定义函数,非常方便。 源代码网推荐 源代码网推荐 ---- 上述自定义函数在Delphi4、Delphi5里运行通过。 源代码网推荐 源代码网供稿. |
