2012-09-08 52 views
3

我正在研究一個c#項目。哪個命名空間在C#.Net中包含hWnd?

我想知道: 哪個命名空間在C#.Net中包含hWnd,tWindowPlacement,TAboutBox?

+1

它們不是.NET本身的一部分。如果您使用的是引用它們的代碼,那麼要麼使用第三方庫,要麼將其聲明在別的地方。 –

回答

4

我認爲你是.NET新手,也可能是UI庫?在.NET中執行UI與舊的Windows C'Win32'API不同。

像Jon提到的,.NET和它的UI庫不使用這些項目。除了窗口句柄(即HWND)之外,還有一些類負責可以實例化和使用的用戶界面。例如,在經典的.NET中,Windows大部分被System.Windows.Forms命名空間中的UI元素取代。爲了顯示一個對話框,你可以建立一個表單,最後在表單上調用.Show()來顯示它。您的代碼最終會保存一個指向Form的面向對象實例的變量。沒有代碼可以讓你返回該表單的HWND。與Win32相比,它確實是編寫UI的更好方式。

還有其他的庫可以顯示.NET可以訪問的UI,比如Windows Presentation Foundation(WPF),這是我的最愛。 Silverlight也是如此,儘管我對Silverlight還沒有更多的瞭解。

如果你打算一般學習.NET,那麼我建議你在這裏問很多問題,並且也可以買些書。我可以建議Jeffrey Richter的第一本書叫做'CLR via C#'。當然,其他人也可能會提出很好的建議,但那本書是我讀過的,哦這麼多年前。當然,經常回到這裏來提問並尋找答案。

祝你好運,在你學習.NET的道路上!

0

對於hWnd,您可以使用System.IntPtr結構 - 其他結構。 TAboutBox聽起來像一個Delphi或C++ Builder類...

1

爲了獲得一個窗口句柄,或的hWnd,在C#中,你只需要返回ProcessMainWindowHandle,像這樣:

​​

您可以使用平臺調用訪問GetWindowPlacement

[DllImport("user32.dll", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] internal static extern bool GetWindowPlacement(IntPtr hWnd, out WINDOWPLACEMENT lpwndpl);

而且我猜TAboutBox正是一個對話框,或MessageBox在C#。

相關問題