B
blockhead
Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序分别有两部分,一部分用VC++开发(实现大部分比较难的功能),一部分用DELPHI开发(主要用于界面,图像效果的实现)。实现原理是:<br>VC++的程序调用DELPHI的程序,并且使DELPHI显示的窗体处于VC++某一指定窗体的上面(注意不是所有窗体,不是实现置顶功能),并且当我移动VC++窗口的时候,DELPHI的窗体同步移动。(我用WINDOWS的消息实现了)。现在的问题就是:如何实现使DELPHI显示的窗体处于VC++某一指定窗体的上面,这部门功能是在CV++实现还是在DELPHI中。我试着用API的SetWindowPos不知道怎么实现。<br>部分原代码:<br>在VC++中<br>int CStudyDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) <br>{<br> if (CDialog::OnCreate(lpCreateStruct) == -1)<br> return -1;<br> <br> // TODO: Add your specialized creation code here<br><br> WinExec("Skin.exe", SW_HIDE);//调用执行DELPHI图像窗体<br> CWnd *hwnd = FindWindow(NULL,"Skin"//获取DELPHI图像窗体句柄<br> if(hwnd!=NULL)<br> {<br> hwnd->PostMessage( WM_POSITION, 0 ,1 );//向DELPHI窗体发送控制消息;<br> }<br> hwnd->SetWindowPos(this,0,0,0,0,SWP_NOACTIVATE);这里如何实现<br> return 0;<br>}<br>DELPHI中的代码:<br>procedure TCurve.FormCreate(Sender: TObject);<br>var Hwnd:Thandle;<br>begin<br> Curve.Hide;<br> SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);//使窗体不在任务栏出现<br> Hwnd:=FindWindow(0,'Cmain');//查找CV++的主窗体<br> {if Hwnd<>0 then<br> begin<br> SetWindowPos (Application.Handle,Hwnd,Curve.Left,Curve.Top,Curve.Width,Curve.Height,SWP_NOACTIVATE);//这里怎么办<br> SetActiveWindow(Hwnd);<br> end;