我创建了一个屏幕保护程序(C#、.NET 4.0,如果这很重要),但我有几个问题(不过,在更美观的层面上)。这些可能很容易解决,但我很可能从未使用过 Win32 API,所以当涉及到这一点时,我很容易错过显而易见的事情。
Q1:我这样设置小预览窗口:
SetParent(句柄,hwndParent); SetWindowLong(Handle, GWL_STYLE, new IntPtr(GetWindowLong(Handle, GWL_STYLE) | WS_CHILD)); 矩形父矩形; GetClientRect(hwndParent, out ParentRect); 尺寸 = 父矩形尺寸;
wherehwndParent
是从第二个命令参数解析的。这里的问题是预览窗口从屏幕保护程序设置选项卡中窃取了焦点。作为一个天真的尝试,我打电话给SetFocus(hwndParent)
但没有任何效果。将焦点保持在应有位置的正确方法是什么
Q2:如果我以创建表单的“常规方式”打开配置对话框,即
Application.Run(新的 ConfigurationForm());
该对话框将不是控制面板小程序的模式。如何做到这一点?我已经了解,预期父级的 HWND 与命令参数一起提供为“/c:nnnnnnnn”,但这就是我所得到的。(使用SetParent(hwndParent)
只是表现得很奇怪,所以它显然不是正确的功能。)