DLL的高手看过来,是谁吃了WMMouseLeave事件?怎样解决?(200分)

  • 主题发起人 主题发起人 yayongm
  • 开始时间 开始时间
Y

yayongm

Unregistered / Unconfirmed
GUEST, unregistred user!
library prjDemo;

{
udemo.pas中的Form1上只有两个SpeedButton.
问题:当鼠标指针移动到SpeedButton上时,SpeedButton再也不会恢复原状了,为什么?怎样解决?
此问题在D4-D6中都存在.
}

uses
SysUtils,
Classes, Forms, dbtables, windows,
udemo in 'udemo.pas' {Form1};
var
SavedDLLApp: TApplication;
SavedDllScr: TScreen;
SavedSessions: TSessionList;

function Load(App: TApplication; Scr: TScreen; SessionsParam: TSessionList): Boolean;
begin

if not Assigned(SavedDLLApp) then begin
SavedDLLApp := Application;
Application := App;
end;
//use MDICount in MDIForm
if not Assigned(SavedDllScr) then begin
SavedDllScr := Screen;
Screen := Scr;
end;
if not Assigned(SavedSessions) then begin
SavedSessions := Sessions;
Sessions := SessionsParam;
end;

with TForm1.Create(App.MainForm) do
Show;//此句改为ShouModal后一切正常,why?
Result := True;
end;

procedure NewDLLProc(Reason: integer);
begin
if Reason = 0 then begin
if Assigned(SavedDllApp) then
Application := SavedDllApp;
if Assigned(SavedDllScr) then
Screen := SavedDllScr;
if Assigned(SavedSessions) then
Sessions := SavedSessions;
end;
end;

exports Load;

begin
DLLProc := @NewDLLProc;
end.

 
没人来,只好自己提前一下!
各位,给看看先!
 
MDI是个问题,DLL中用是个问题
以前有人说微软的MDI有问题,我一直不知道是什么问题,知道我们项目用到和你
同样的问题。消息传到了MDIChild,不知道为什么他有的消息不响应,比如快捷键,
我是手工处理消息的,我想你的鼠标消息也应该发到了MDIChild,估计手工处理可以,
唉现在微软都不用MDI了。
 
以前帖子说好像还要设置接口呀什么的记不清了,可惜他也没有解决,查一下以前帖子吧
 
我自己解决搞定了!!!!!!!!!!!!!!!!开心啊!
版主,分数怎么办呀??????????
200大分呀!!!!!!!!!!!
 
好像时是这样的,我以前做了一个东西和你碰到的问题比较类似:

VC写的主程序,然后将其主窗口隐藏起来,同时调用Delphi编写的DLL,使用该dll中的界面
当程序的伪主窗口,

发现在调用show的时候,很多控件的消息响应都没了,原因大概是show方式为非模态,
Dll程序的消息循环没能得到正确处理(本来应该告知主程序处理的),

如果改为ShowModal的模态方式后,则Dll中的窗口可以自己处理消息循环,
大部分问题可以得到解决,倒是仍然存在一点问题,(比如说在打开菜单的情况下,在
菜单上移动鼠标的事件无法获取,不过已经不是很严重了)

如果你看看delphi的代码的话,可以看见两种方式在处理消息时候是不同的。


的 消息
 
后退
顶部