如何将自定义button添加到Windows最小化/最大化/closures(x)

我想知道是否有一种方法来添加(编程方式,当然)图标/button/除了纯文本以外的任何窗口(Microsoft Windows窗口…)的标题栏或旁边的最小化/最大化/closuresbutton是。 我可以自己绘制它,并创build一个错觉它是窗口的一部分,但我不知道在user32 API是否有这样一个方法。

到目前为止,我find了一种方法来禁用最小化/最大化/closuresbutton,但没有办法添加一个自定义的一个给他们。 这对我来说似乎很奇怪。

这是我想要实现的: 替代文字

我一直在想这是怎么做到的,因为使用gdi / gdi +为每个窗口绘制一个button,然后检测它是否被另一个窗口重叠,然后只显示非重叠部分在我看来就像一个不太可能的解决scheme。 可能该button已经在窗口类中注册,以便每个窗口都有这个button。 任何指针怎么办?

另外,假设我没有启用Unicode,我该如何创build一个button。 然后在下面这段代码中:

HWND hwndCommandLink = CreateWindow( L"BUTTON", // Class; Unicode assumed. L"", // Text will be defined later. WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_COMMANDLINK, // Styles. 10, // x position. 10, // y position. 100, // Button width. 100, // Button height. hDlg, // Parent window. NULL, // No menu. (HINSTANCE)GetWindowLong(hDlg, GWL_HINSTANCE), NULL); // Pointer not needed. SendMessage(clHwnd, WM_SETTEXT, 0, (LPARAM)L"Command link"); SendMessage(clHwnd, BCM_SETNOTE, 0, (LPARAM)L"with note"); 

我不得不用所有漂亮的Windows常量replace长的等价物….但是,当我search他们,我得到的是这样的: http : //msdn.microsoft.com/en-us/library/bb775951(v = VS.85)的.aspx

任何指针?

这已经在SO处理了好几次了。 在视觉主题出现之前,这非常简单 – 只需在标题栏上绘制(WM_NCPAINT)并响应标题栏事件(WM_NCHITTEST,WM_NCLBUTTONDOWN等)即可。 使用航空,这是更加困难的。 但是这是可能的,并且有关于它的文章。