如果你的两个window是同一个Application的话,用这样做: ShowWindow(Form2.Handle, SW_SHOWNA); 如果你的Windows是不同一个Application的话, 先在Application1定义一个message const WM_Test = WM_USER + 10; 然后通过这个API函数: SendMessage(Form1.Handle, WM_Test, 1, 0); //TButton(Sender).Tag为button的TAg属性Application2接收是可以这样写: procedure TestMessage(var Msg: TMessage); Message WM_Test ; procedure TForm1.TestMessage(var Msg: TMessage);begin with msg do begin Case WParam of 1: ShowWindow(Form2.Handle, SW_SHOWNA); end; end;
如果你的两个window是同一个Application的话,用这样做: ShowWindow(Form2.Handle, SW_SHOWNA); 如果你的Windows是不同一个Application的话, 先在Application1定义一个message const WM_Test = WM_USER + 10; 然后通过这个API函数: SendMessage(Form1.Handle, WM_Test, 1, 0);Application2接收是可以这样写: procedure TestMessage(var Msg: TMessage); Message WM_Test ; procedure TForm1.TestMessage(var Msg: TMessage);begin with msg do begin Case WParam of 1: ShowWindow(Form2.Handle, SW_SHOWNA); end; end;
呵呵,应该先FindWindow再说吧!找到窗口句柄后再激活那个窗口!
To pandaxj(框):我是以C++的规则写的,应为我不太用dephi pascal规则的是: SetWindowPos(form2.handle,HWND_TOPMOST,left,top,width,height, SWP_SHOWWINDOW or SWP_NOACTIVATE ); 在Win98+dephi5 中编译通过。
大家帮帮忙哦,今天晚上就要搞定哦……
不清楚?这个消息程序类似Word的助手,当有消息来的时候才出现……两个窗体我做过了,程序得到焦点有点儿问题!消息显示的时候其它的窗体就把焦点转移了,消息会在任何窗体的时候都有可能出现,不可能去控制所有的窗体的焦点吧……
::SetWindowPos(hFxZi,HWND_TOPMOST,ptc.x+20,ptc.y+20,0,0,
SWP_SHOWWINDOW|SWP_NOACTIVATE|SWP_NOSIZE);
//显示字典窗口
SWP_SHOWWINDOW|SWP_NOACTIVATE 这个参数就是使窗口显示,但不激活它。
::ShowWindow(hFxZi,SW_HIDE);//隐藏字典窗口
在主窗体中控制其他窗体上的memo,焦点怎么会过去呢?我试过了,可行。
::SetWindowPos(hFxZi,HWND_TOPMOST,ptc.x+20,ptc.y+20,0,0,SWP_SHOWWINDOW|SWP_NOACTIVATE|SWP_NOSIZE);
你写的这个我不太明白……就最后一个参数SWP_SHOWWINDOW|SWP_NOACTIVATE|SWP_NOSIZE
可以这样写的吗,5.0好象不行呀,只用SWP_NOACTIVATE和只用SWP_SHOWWINDOW都不行呀?!
当正在A中输入数据时,B有可能弹出(StayOnTop),但要求这个时候A不能失去焦点,还要能看到B!
ShowWindow(Form2.Handle, SW_SHOWNA);
如果你的Windows是不同一个Application的话,
先在Application1定义一个message
const
WM_Test = WM_USER + 10;
然后通过这个API函数:
SendMessage(Form1.Handle, WM_Test, 1, 0);
//TButton(Sender).Tag为button的TAg属性Application2接收是可以这样写:
procedure TestMessage(var Msg: TMessage); Message WM_Test ;
procedure TForm1.TestMessage(var Msg: TMessage);begin
with msg do
begin
Case WParam of
1: ShowWindow(Form2.Handle, SW_SHOWNA);
end;
end;
ShowWindow(Form2.Handle, SW_SHOWNA);
如果你的Windows是不同一个Application的话,
先在Application1定义一个message
const
WM_Test = WM_USER + 10;
然后通过这个API函数:
SendMessage(Form1.Handle, WM_Test, 1, 0);Application2接收是可以这样写:
procedure TestMessage(var Msg: TMessage); Message WM_Test ;
procedure TForm1.TestMessage(var Msg: TMessage);begin
with msg do
begin
Case WParam of
1: ShowWindow(Form2.Handle, SW_SHOWNA);
end;
end;
pascal规则的是:
SetWindowPos(form2.handle,HWND_TOPMOST,left,top,width,height,
SWP_SHOWWINDOW or SWP_NOACTIVATE );
在Win98+dephi5 中编译通过。