我在窗口的panel中调用了一个dll文件中的窗口,调用是一切正常的,但要加
Panel1.updatecontrolstate窗口才能正常的显示出来。如果我的dll窗体中用了pagecontrol,问题就出现了,当按上面的tab切换时, panel的显示不会发生变化,除非再次调用Panel1.updatecontrolstate。 关键是这个语句怎么加,加在什么地方?大家可以尝试一下。
Panel1.updatecontrolstate窗口才能正常的显示出来。如果我的dll窗体中用了pagecontrol,问题就出现了,当按上面的tab切换时, panel的显示不会发生变化,除非再次调用Panel1.updatecontrolstate。 关键是这个语句怎么加,加在什么地方?大家可以尝试一下。
解决方案 »
- 散分中午1:00结贴,大家快来呀
- 用OpenDialog获取路径名的问题
- ■■■TMediaPlayer的问题■■■
- 简单问题...... up有分!!!!!!!!!!!
- 請問哪里有繁體ADO2.1下載?
- 谁那里有关于installshield6.22的安装说明??
- 关于用Delphi读.doc,.dwg和图片文件进Access数据库中的OLE对象字段的问题?
- 服务器数据库程序的问题?
- 输入数据时,COMBOBOX自动匹配的问题
- 急急急!!!如何用DELPHI读取一个文件的前八个字节!?!?
- 急!!!TDBRADIOGROUP包含自增长字段时无法点选,如何解决
- 如何在delphi中把汉字插入到SOL Server 2000的表中
updatecontrolstate发送的是cm_base+25;所以要么你在本地窗口切换的时候sendmessage,要么在dll窗口中的onpaint事件里
写入.//不知道对不对,楼主看看
function CreateDLLForm(myAPP:TApplication;myScr:TScreen):TForm;
begin
Application:=myApp;
Screen:=myScr;
application.CreateForm(TfrmDllForm,frmDllForm);
result:=frmDllForm;
end;我的主窗口代码:
myHandle:=LoadLibrary('dllproj.dll');
if myHandle<>0 then
begin
@myProc:=GetProcAddress(myHandle,'CreateDLLForm');
if assigned(myProc) then
begin
DLLForm:=myProc(Application,Screen);
DllForm.Parent:=Panel1;
DLLform.Show;
Panel1.UpdateControlState;
end;
end;我尝试过了,dll窗口的pagecontrol发生变化的时候,主窗口好像无法感知。
SENDMESSAGE(APPLICATION。MAINFORM。HANDLE,WM-XXXX,XX,XX);
然后主窗体在对应的消息处理函数里面执行相应的操作!
我本来想在dll窗口的pagecontrolchange中用sendmessage,结果,主程序根本就没收到,问题确实如你所说,主程序的application句柄得不到啊,所以这个发消息的动作写在什么地方还没研究出来
在创建Dllform的时候把applicaton.handle作为DLLForm单元中的全局变量。
(或者直接传递panel1的handle);这样就可以给application或者panel1发送消息直接通信了。消息在pagecontrol的onchange事件里发送即可。