2014-01-16 20 views
0

最近我一直在研究Windows牆紙管理器。它將掃描多個目錄中的圖像並設置一個設置窗口進行自定義。另外,我想繞過內置壁紙,而是使用基於此處討論的想法的窗體窗體:Setting a Windows form to be bottommost以允許更好地控制圖像放置。我已經建立了文件操作來查找壁紙和各種其他支持操作。然而,我很難理解如何正確實現窗體。不只是上面的堆棧溢出文章中的一個。到目前爲止,我的CompSci類(迄今爲止還沒有7個)已經討論過GUI,因此我沒有任何工作經驗。我轉向互聯網學習如何使用GUI。雖然我學到了很多東西來開始一個線程或者顯示一個表單,但是我從來沒有找到任何描述用GUI設計應用程序的正確方法。我在工程應用程序方面學到的所有知識都是限制線程數量,並嘗試將GUI與非GUI相關的代碼分開(如果有意義的話)。試圖瞭解Windows窗體和C#中的線程#

就像我說的,我不知道我在做什麼。如果有人願意給我提供指針或者甚至是關於這個主題的鏈接,那太棒了!

編輯:我一直在用這個作爲一個學習鍛鍊,我主要從試錯學習,大部分可能錯誤

+1

據我所知,這不適合你。最底層的表單仍然位於桌面之上,其圖標隱藏在視圖之外,這不是您要查找的內容。如果您想了解WinForms,只需查找初學者的教程。但是,WPF現在更加流行,所以我建議你學習一下。 –

+0

謝謝!我一定會考慮一下。我一直在試驗如何構建它,並偶然發現winform。 – techfreek

回答

1

爲了吸引真正的桌面上,你需要得到它的句柄: GetDesktopWindow是使用的功能。但要更改壁紙,您不要在桌面上繪製,而是使用專用的API來處理桌面壁紙:SystemParametersInfo(SPI_SETDESKWALLPAPER, ...)。還有傳統的COM Shell接口,IActiveDesktopIActiveDesktop::SetWallpaper

正如你所看到的,沒有任何的API來操作桌面,壁紙的管理(C#,.NET)所以你必須通過一些跳火圈得到這個從C#的工作。如果你的目標是學習C#風格的用戶界面,我會建議堅持這種做法(winforms,WPF等)的'祝福'的方式,不要試圖直接跳到p-Invoke和COM interop。也許你可以選擇另一個項目,例如。以旋轉木馬形式顯示圖像/圖片。

如果您還好奇,Google for C#和SystemParametersInfo或IActiveDesktop,您會發現如何從託管C#中執行此操作的示例,這裏是StackOverflow上的很多示例。

加成:當然Raymond Chen有關於此主題的博客:How do I put a different wallpaper on each monitor?