首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尝试理解C#中的Windows窗体和线程

尝试理解C#中的Windows窗体和线程
EN

Stack Overflow用户
提问于 2014-01-16 07:23:22
回答 1查看 144关注 0票数 0

最近我一直在做一个窗户壁纸经理。它将扫描多个目录的图像,并有一个设置窗口自定义。此外,我想绕过内置的壁纸,而是使用基于这里讨论的思想的窗口表单:将Windows窗体设置为最底层,以允许对图像放置进行更大的控制。我已经建立了文件操作来查找壁纸,以及其他各种支持操作。然而,我很难理解如何正确地实现一个windows表单。不只是上面的堆栈溢出柱中的那个。到目前为止,我的CompSci类(到目前为止有7个)还没有讨论GUI,因此我没有任何知识可供学习。我转向互联网学习如何与GUI合作。虽然我学到了很多启动线程或显示表单的知识,但我始终无法找到任何描述用GUI设计应用程序的正确方法的方法。在应用程序工程方面,我学到的就是限制线程的数量,并尝试将GUI从与GUI无关的代码中分离出来(如果这有意义的话)。

就像我说的,我不知道我在做什么。如果有人愿意给我指点,甚至给我一个关于这个主题的链接,那就太棒了!

编辑:我一直将此作为一个学习练习,我主要是从尝试和错误中学习,可能大部分都是错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-16 08:09:21

要在真正的桌面上绘图,您需要获得它的句柄:GetDesktopWindow是要使用的函数。但是要更改壁纸,您不能在桌面上绘图,而是使用专用的API来处理桌面壁纸:SystemParametersInfo(SPI_SETDESKWALLPAPER, ...)。还有遗留的COM接口、IActiveDesktopIActiveDesktop::SetWallpaper

正如您所看到的,操作桌面和壁纸的API都没有被管理( C#,.Net),因此您必须跳过一些循环才能从C#中获得工作。如果您的目标是学习C#风格的UI,我建议您坚持使用“祝福”的方法(winforms、WPF等),不要直接跳转到p-Invoke和COM互操作。也许你可以选择另一个项目。以表格形式在旋转木马中显示图像/图片。

如果你仍然好奇,谷歌的C#和SystemParametersInfo或IActiveDesktop,你会发现如何从托管C#,许多例子,这里的StackOverflow。

奖金:当然,雷蒙德·陈有一个关于这个话题的博客:我如何在每个显示器上放置不同的壁纸?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21155677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档