delphi 把置托盘图标做成模块时 Tip无法用变量常量赋值的问题

来源:百度知道 编辑:UC知道 时间:2024/06/30 03:04:59
就是一个很平常的功能 相信多大数学习delphi的朋友都会的功能
在任务栏右下角显示自己的程序图标 中文名 就是置托盘图标了.
在单个程序中 我使用一点问题也没有
但是我想修改成模块 以后只要引用模块单元里边的过程
填写几个参加就能重复使用了
附上代码:
声明过了一个全局变量 NotifyIcon
//------------创建托盘图标------------------
procedure P_NotifyIcon_Add(PWnd: Cardinal;PuID: Integer;PuCallMsg: Cardinal;Picon: Cardinal;PTip: Array [0..63] of char{看Tip 就是这样的类型});
begin
NotifyIcon.cbSize:= SizeOf(NotifyIcon);
NotifyIcon.Wnd:= PWnd;
NotifyIcon.uID:= PuID;
NotifyIcon.uFlags:= NIF_ICON + NIF_MESSAGE + NIF_TIP;
NotifyIcon.uCallbackMessage:= PuCallMsg;
NotifyIcon.hIcon:= Picon;
NotifyIcon.szTip:= PTip; // '小工具集';
Shell_NotifyIcon(NIM_ADD,@NotifyIcon);
end;
================================================================
就是想 NotifyIcon.szTip:= PTip; 调用时在参数里写上 '内容' 就可以随意用了 但是 老提示 type不对
var
Strr: array [0..63] of Char; //试着用变量 常量 不使用Tip参数都不行 我刚开始学delphi 有些常用过程和函数 我放在一个模块单元中了

procedure P_NotifyIcon_Add(PWnd: Cardinal;PuID: Integer;PuCallMsg: Cardinal;Picon: Cardinal;PTip: Array [0..63] of char{看Tip 就是这样的类型});
把这个改成:
procedure P_NotifyIcon_Add(PWnd: Cardinal;PuID: Integer;PuCallMsg: Cardinal;Picon: Cardinal;PTip:Pchar);
然后赋值的这句:
NotifyIcon.szTip:= PTip; // '小工具集';
改成:
Move(PTip^,NotifyIcon.szTip,64);

这样应该就可以了,而且你调的时候直接传'小工具集'这样就行了。

另:你只放在一个单元不太好,如果可以你最好把它写成一个控件。不过,第三方的托盘控件早就有了,而且Delphi2006以上的版本都会自带托盘控件。所以你自己再封装用来学习可以,真正用的直接用Delphi的组件就行了

你可以这样定义
type
Stemp= Array [0..63] of char;
定义一种数组类型
procedure P_NotifyIcon_Add(PWnd: Cardinal;PuID: Integer;PuCallMsg: Cardinal;Picon: Cardinal;PTip:Stemp);
这样就可以了