动态库中如何改变鼠标状态? ( 积分: 50 )

  • 主题发起人 主题发起人 skywater007
  • 开始时间 开始时间
S

skywater007

Unregistered / Unconfirmed
GUEST, unregistred user!
今天是平安夜,明天是圣诞节,大家节日快乐:)

问大家一个问题:
我在DLL库中定义了一个函数
function chage(a:string);integer;stdcall;
begin
Screen.cursor:=crhourclass;
//执行代码
........
end;

为什么我在宿主程序中调用这个DLL中的函数,鼠标状态并没有改变,这是为什么啊?
 
今天是平安夜,明天是圣诞节,大家节日快乐:)

问大家一个问题:
我在DLL库中定义了一个函数
function chage(a:string);integer;stdcall;
begin
Screen.cursor:=crhourclass;
//执行代码
........
end;

为什么我在宿主程序中调用这个DLL中的函数,鼠标状态并没有改变,这是为什么啊?
 
crHourGlass
 
//Project1.Dll
procedure SetCursor(AScreen : TScreen
ACursor: TCursor)
stdcall
exports SetCursor;

procedure SetCursor(AScreen : TScreen
ACursor: TCursor)
stdcall;
begin
OldScreen := Screen;
Screen := AScreen;
Screen.Cursor := crHourGlass;
Screen := OldScreen;
end;

//Project1.Exe
procedure SetCursor(AScreen : TScreen
ACursor: TCursor)
stdcall
external 'Project1.dll';
procedure TForm1.Button2Click(Sender: TObject);
begin
SetCursor(Screen, crHourGlass);
end;
 
To xianguo:
谢谢这位兄弟,我按照你的方法做,虽然可以改变鼠标形状,但是会出现读写地址错误,为什么呢?
//Project1.Dll
procedure SetCursor(AScreen : TScreen
ACursor: TCursor)
stdcall
exports SetCursor;

procedure SetCursor(AScreen : TScreen
ACursor: TCursor)
stdcall;
Var
Oldscreen :Tscreen;
begin
OldScreen := Screen;
Screen := AScreen;
Screen.Cursor := crHourGlass;
Screen := OldScreen;
end;
 
怎么没有人理我啊?
再问个问题:
怎样判断pchar类型的字符串为空值?
 
各位高手,帮帮小弟了。。。
 
谁帮我看看,谢谢了
 
http://www.js.lss.gov.cn:7001/download/files/SetCursor.rar
 
var
Tmp: PChar;
begin
if SizeOf(Tmp)=0 then
ShowMessage('该字符串为空串');
 
修改DLL庫:
function SetCursor(a:string);TCursor;stdcall;
begin
... ...
Result:=crSizeAll;
... ...
end;

調用DLL的EXE主程序使用:
procedure TForm1.Button1Click(Sender: TObject);
begin
self.Cursor:= SetCursor('SetCursor');
end;
 
非常感谢各位,特别是xianguo
 
后退
顶部