我已经创build了一个屏幕保护程序(C#.NET 4.0如果重要的话),但我有一些问题(在一个更美观的水平,虽然)。 这些可能很容易解决,但是我有很多从未使用过的Win32 API,所以我可以很容易地忽略这个问题。
Q1:我设置了这样的小预览窗口:
SetParent(Handle,hwndParent);
SetwindowLong(Handle,GWL_STYLE,new IntPtr(getwindowlong(Handle,GWL_STYLE)| WS_CHILD));
矩形parentRect;
GetClIEntRect(hwndParent,out ParentRect);
Size = parentRect.Size;
hwndParent从第二个命令参数parsing。 这里的问题是预览窗口从屏幕保护程序设置选项卡中窃取焦点。 作为一个天真的尝试,我打电话给SetFocus(hwndParent)但没有任何效果。 把重点放在应该保持的地方的正确方法是什么?
Q2:如果我按照“常用的方式”创build表单,即打开configuration对话框
如何关注上次激活的程序?
.NET WinForms应用程序的MVC / MVP框架
SystemEvents.SessionSwitch用户被locking/解锁
提前C#string比较
一个服务附加到另一个截断文件
Application.Run(new ConfigurationForm());
该对话框将不会是控制面板小程序的模式。 这怎么能实现? 我已经了解到,父母的HWND提供了命令参数为“/ c:nnnnnnnn”,但这是我得到的。 (使用SetParent(hwndParent)只是performance怪异,所以显然不是正确的function。)
打开自定义文件,参数总是空的
是WPF仍然相关,我可以在我的C#窗口应用程序中使用它?
TimeZoneInfo和CultureInfo的System.DateTime和Caching
System.Diagnostics.Process无法从windows窗体应用程序中的映射驱动器启动文件
查找包含特定文本的窗口
你不检查你的API调用的返回值…我知道,我也从CodeProject“借”了这个代码,并且它在XP以前的任何windows中都被破坏了。
您对SetwindowsLong的调用失败,因为一旦您更改了窗口的父窗口,您将无法再访问它。 如果你检查了你的返回值并使用GetLastError,你会发现getwindowlong和SetwindowLong失败,错误= 5(拒绝访问)。
我通过将调用移到SetParent来解决这个问题,以便调用后使窗口成为子窗口。 在这个问题中查看我的代码: 为什么屏幕保护程序控制面板不能在我的表单死的时候杀死我的表单?
你也会很快问我在那里问的问题:-)
总结以上是内存溢出为你收集整理的.NET:屏幕保护程序configuration对话框所有者和预览焦点全部内容,希望文章能够帮你解决.NET:屏幕保护程序configuration对话框所有者和预览焦点所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)