C# Winform 窗體美化(九、嵌入窗體)
阿新 • • 發佈:2019-01-10
九、嵌入窗體
還是關於 Winform 窗體的一些操作問題,這次是研究了一個嵌入窗體,這次學習純屬偶然,專案中確實沒遇到過這種需求。就是把別人的程式嵌入到自己的程式中,就像這樣:
這裡我嵌入了測試顯示器的程式
關於嵌入程式的資料,上面連結部落格的作者寫的非常詳細了,而且也整理了相關的程式碼,可以下載學習。
這裡我自己也整理學習了一下,有需要可以下載。原始碼下載
嵌入過程主要程式碼
private void EmbedProcess(Process app, Control control)
{
//驗證程序和控制元件非空
if (app == null || app.MainWindowHandle == IntPtr.Zero || control == null ) return;
try
{
//核心程式碼:嵌入程式
SetParent(app.MainWindowHandle, control.Handle);
}
catch (Exception) { }
try
{
//移除嵌入的視窗的視窗標題欄
SetWindowLong(new HandleRef(this, app.MainWindowHandle), GWL_STYLE, WS_VISIBLE);
}
catch (Exception) { }
try
{
//將嵌入的視窗歐放置到合適位置,填滿寬高
MoveWindow(app.MainWindowHandle, 0, 0, control.Width, control.Height, true);
}
catch (Exception) { }
}
效果圖
這裡可以看到嵌入程式的三個步驟:
1. 嵌入程式
2. 移除嵌入的視窗的視窗標題欄
3. 將嵌入的視窗歐放置到合適位置,填滿寬高
截圖感受一下:
1.嵌入程式
2.移除嵌入的視窗的視窗標題欄
3.將嵌入的視窗歐放置到合適位置,填滿寬高
疑問
最後還是有一些疑問沒有解決:
1. 焦點的問題;
2. 有些應用不能被嵌入;
3. 有些應用嵌入位置可能出現異常;