如何設定彈出獨立視窗且強制維持在最上層?

請教各位,

如果我有個主介面視窗,內部有一個按鈕,按下後可以跳出一個獨立的option視窗,
要如何讓這個option視窗能夠強制維持在最上層的位置,
而且,在按下OK或Cancel關掉之前,無法選擇其他視窗,若滑鼠點到外面的位置還會有警示聲?

運作效果類似LabVIEW開發環境下,最上面工具列選擇Tools->Options…出現的Option視窗~

目前主要問題有兩個:

Q1: 如何按鈕後彈出獨立視窗?

我看到有3種做法:
(1)將彈出的視窗做成VI,並設定其VI Property->Windows Appearance->Show front panel when called
如下所示:

(2)使用Static VI Reference,然後用Invoke Node執行FP.Open和Run VI這兩個Method
如下所示:

(3)使用Open VI Reference,然後用Invoke Node執行FP.Open和Run VI這兩個Method

請問這三種方法有何不同?  

Q2:如何設定彈出的視窗強制維持在最上層,直到關閉為止?

這個目前只看過一個方法,就是在該視窗的VI中,
使用Event Structure,然後在Time out裡面用Call Library Function Node,
去呼叫user32.dll中的SetWindowPos函數來設定,

http://msdn.microsoft.com/en-us/library/windows/desktop/ms633545(v=vs.85).aspx

這方法達成的效果很接近,但卻不太一樣,
因為他是藉由Event Structure中的Timeout事件,每隔幾毫秒重新設定視窗位置,所以看得出來會有一點延遲。
而且選擇視窗之外的地區,也不會有警告的聲音。

所以我想請問,
是否有哪個Method可用? 還是要呼叫哪一個Windows API比較恰當?

感謝!

我可以回答第二個的問題,就是在windows appearance的window behavior設定為modal即可


PS.關於第一點可以參考以下文章
http://vishots.com/dynamic-process-vis-in-labview-part1/
ancle41543.7652777778

感謝Ancle!

Modal的設定是符合我需要的!

另外第一個問題的三種方式,我只是擔心使用絕對路徑,若編譯成EXE後會不會有差異而已~
我會再另行測試再將結果回報!感謝!

[QUOTE=SKYBOW]感謝Ancle!

Modal的設定是符合我需要的!

另外第一個問題的三種方式,我只是擔心使用絕對路徑,若編譯成EXE後會不會有差異而已~
我會再另行測試再將結果回報!感謝!
[/QUOTE]

忘了來回文!
我使用方法(2)的絕對路徑來取得VI Reference,編譯成執行檔是沒有問題的!
不過目前我看到比較常見的是方法(3),比較有彈性。