因此,我放棄了將進度條集成到實際安裝程序屏幕的想法,但是讓Windows窗體顯示在頂部所需要的只是簡單的荒謬。我必須得到安裝程序窗口的句柄並將其發送到後臺,因爲向前移動進度條窗口根本不起作用。我現在已經轉向Mac開發,所以回到這只是令人沮喪。我記得認爲C#.NET非常酷。它沒有Cocoa/Objective-C。
真氣生氣,有一種叫做BringToFront()的方法,它簡單地忽略了你。爲什麼我必須下載到Windows API代碼才能完成像管理Z-Order一樣基本的GUI? Z順序?真的嗎?
如果你想知道,這是我落得這樣做(通過谷歌):
[DllImport("user32.dll", EntryPoint = "SetWindowPos")]
public static extern bool SetWindowPos(
IntPtr hWnd, // window handle
IntPtr hWndInsertAfter, // placement-order handle
int X, // horizontal position
int Y, // vertical position
int cx, // width
int cy, // height
uint uFlags); // window positioning flags
public const uint SWP_NOSIZE = 0x1;
public const uint SWP_NOMOVE = 0x2;
public const uint SWP_SHOWWINDOW = 0x40;
public const uint SWP_NOACTIVATE = 0x10;
[DllImport("user32.dll", EntryPoint = "GetWindow")]
public static extern IntPtr GetWindow(
IntPtr hWnd,
uint wCmd);
public const uint GW_HWNDFIRST = 0;
public const uint GW_HWNDLAST = 1;
public const uint GW_HWNDNEXT = 2;
public const uint GW_HWNDPREV = 3;
public static void ControlSendToBack(IntPtr control)
{
bool s = SetWindowPos(
control,
GetWindow(control, GW_HWNDLAST),
0, 0, 0, 0,
SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE);
}
我得到一個處理安裝程序窗口,然後調用ControlSendToBack()就可以了。它的工作原理,但它發送到後面。我嘗試了另一種方法,將它發回一個位置,但這也不起作用。 Windows編程 - 和1995年一樣好。很酷。