比较来自世界各地的卖家的域名和 IT 服务价格
wpf

按钮 "帮助"?

如何将此按钮添加到标题字符串中 WPF, 因为它经常在许多应用中使用,我认为它会被建造或类似的东西,但似乎不是。 无论如何,如果您了解它,请告诉我。

谢。

编辑:

没有什么不等于的
http://msdn.microsoft.com/en-u ... .aspx
?

原则上,有 ? 徽章B. win forms, 你需要做的就是:


public Form1//
{
InitializeComponent//;

this.HelpButton = true;
this.MaximizeBox = false;
this.MinimizeBox = false;
}


是你。 WPF 有什么样的吗?
已邀请:

冰洋

赞同来自:

它很容易,只需将此代码插入您的课程 Window.

此代码使用 interop 删除样式 WS_MINIMIZEBOX 和 WS_MAXIMIZEBOX 并添加扩展样式 WS_EX_CONTEXTHELP /只有在删除折叠并部署按钮时,才会出现问号/.

EDIT: 添加单击“帮助”按钮,这是通过连接完成的 WndProc 通过 HwndSource.AddHook 并听取消息 WM_SYSCOMMAND 通过 wParam SC_CONTEXTHELP.

检测到单击时,此代码将通过将其更改为事件,重定向的事件甚至命令来显示消息窗口 /为了 MVVM 应用程序/, 留下读者的锻炼。


private const uint WS_EX_CONTEXTHELP = 0x00000400;
private const uint WS_MINIMIZEBOX = 0x00020000;
private const uint WS_MAXIMIZEBOX = 0x00010000;
private const int GWL_STYLE = -16;
private const int GWL_EXSTYLE = -20;
private const int SWP_NOSIZE = 0x0001;
private const int SWP_NOMOVE = 0x0002;
private const int SWP_NOZORDER = 0x0004;
private const int SWP_FRAMECHANGED = 0x0020;
private const int WM_SYSCOMMAND = 0x0112;
private const int SC_CONTEXTHELP = 0xF180;


[DllImport/"user32.dll"/]
private static extern uint GetWindowLong/IntPtr hwnd, int index/;

[DllImport/"user32.dll"/]
private static extern int SetWindowLong/IntPtr hwnd, int index, uint newStyle/;

[DllImport/"user32.dll"/]
private static extern bool SetWindowPos/IntPtr hwnd, IntPtr hwndInsertAfter, int x, int y, int width, int height, uint flags/;


protected override void OnSourceInitialized/EventArgs e/
{
base.OnSourceInitialized/e/;
IntPtr hwnd = new System.Windows.Interop.WindowInteropHelper/this/.Handle;
uint styles = GetWindowLong/hwnd, GWL_STYLE/;
styles &= 0xFFFFFFFF ^ /WS_MINIMIZEBOX | WS_MAXIMIZEBOX/;
SetWindowLong/hwnd, GWL_STYLE, styles/;
styles = GetWindowLong/hwnd, GWL_EXSTYLE/;
styles |= WS_EX_CONTEXTHELP;
SetWindowLong/hwnd, GWL_EXSTYLE, styles/;
SetWindowPos/hwnd, IntPtr.Zero, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED/;
//HwndSource/PresentationSource.FromVisual/this//.AddHook/HelpHook/;
}

private IntPtr HelpHook/IntPtr hwnd,
int msg,
IntPtr wParam,
IntPtr lParam,
ref bool handled/
{
if /msg == WM_SYSCOMMAND &&
//int/wParam & 0xFFF0/ == SC_CONTEXTHELP/
{
MessageBox.Show/"help"/;
handled = true;
}
return IntPtr.Zero;
}

诸葛浮云

赞同来自:

没有帮助按钮离开盒子 WPF. 然而,它应该是一个震惊来变成自己的震惊。

要回复问题请先登录注册