如題
本人分少, 請各位大俠幫幫忙!!!
uj5u.com熱心網友回復:
用 win API 函式:SetForegroundWindow(視窗的句柄);
SetActiveWindow(視窗的句柄);
uj5u.com熱心網友回復:
這個嘗試過了, 不管用 ...uj5u.com熱心網友回復:
就是不是每次都成功uj5u.com熱心網友回復:
你能夠獲得句柄么?發送WM_SETFOCUS訊息或者直接setfocus可行嗎?
uj5u.com熱心網友回復:
還是不行,可能因為我的程式是縮小在taskbar的右邊吧...uj5u.com熱心網友回復:
什么樣的彈出視窗?直接ShowModal不行嘛uj5u.com熱心網友回復:
一般的TFrom, 但ShowModal后面的句語不能運行下去了...uj5u.com熱心網友回復:
你又要求'不能點擊其他視窗', 又要程式往下走, 似乎有些矛盾uj5u.com熱心網友回復:
先搞清楚自己的業務,在看如何技術實作。uj5u.com熱心網友回復:
unit Unit1;interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Timer1: TTimer;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
f:TForm;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
fr:TRect;
begin
f:=TForm.Create(Application);
f.FormStyle:=fsStayOnTop;
f.BorderStyle:=bsDialog;
Timer1.Enabled:=true;
f.OnClose:=OnClose;
f.ShowModal;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Timer1.Enabled:=False;
ClipCursor(0);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
fr:TRect;
begin
fr:=f.BoundsRect;
MapWindowPoints(0,0,fr,2);
clipcursor(@fr);
end;
end.
= =不知道這樣是否符合
uj5u.com熱心網友回復:
使用timer控制元件,就可以處理,已經試過了uj5u.com熱心網友回復:
樓主是想做像MessageBox那樣阻塞執行緒的視窗uj5u.com熱心網友回復:
“不能點擊其他視窗”是本行程其他視窗,還是所有其他視窗?
把視窗激活置頂后,把滑鼠活動范圍限制在這個視窗區域里,這種方式不知是否符合樓主要求??
uj5u.com熱心網友回復:
同上,學習!轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/157119.html
