C++ WinAPI-自定义大小边框(WS_THICKFRAME)

C++ WinAPI-自定义大小边框(WS_THICKFRAME),c++,winapi,customization,sizing,C++,Winapi,Customization,Sizing,我不喜欢本机大小边框的外观: 我想要一个像这样的花式紫色边框: 我应该手动实现自己的大小边框,还是继续使用WS\u THICKFRAME窗口样式并对其进行自定义 如果我可以自定义它,我希望它也能在没有恶意攻击的情况下完成…我认为您应该实现自己的重画过程(例如,在底部绘制一个紫色矩形,然后在角落绘制一个图标)。如果您希望使您的窗口类似于VS2013窗口,那么您应该使用WS\u POPUP样式,然后实现自己的重画例程。如果您想自定义窗口的窗体,您可以使用区域(SetWindowRgn(),Cre

我不喜欢本机大小边框的外观:

我想要一个像这样的花式紫色边框:

我应该手动实现自己的大小边框,还是继续使用WS\u THICKFRAME窗口样式并对其进行自定义


如果我可以自定义它,我希望它也能在没有恶意攻击的情况下完成…

我认为您应该实现自己的重画过程(例如,在底部绘制一个紫色矩形,然后在角落绘制一个图标)。如果您希望使您的窗口类似于VS2013窗口,那么您应该使用
WS\u POPUP
样式,然后实现自己的重画例程。如果您想自定义窗口的窗体,您可以使用区域(
SetWindowRgn()
CreateRectRgn()
CreateRoundRectRgn()
CreateEllipticRgn()
CreatePolygonRgn()
,等等)。广义上讲,使用WinAPI您可以做任何事情,但您仅限于WinAPI吗?最好使用MFC或Windows窗体来简化窗口界面的创建。

您可以通过在窗口类型标志中指定WS_弹出标志来创建没有边框和标题栏的窗口

WM_NCHITTEST消息的处理程序必须检查某个像素真正属于窗口的哪一部分(例如,调整帧大小),并返回该部分的代码


缺点:您必须自己绘制整个窗口内容(包括标题等)。

也许我应该更具体一些。我已经知道如何绘制自定义窗口本身并实现WM_PAINT。WS_THICKWINDOW样式似乎非常有用且响应迅速。由于它是本机大小边界,我相信它也没有bug,这就是为什么我希望保持这种方式。然而,本地的外观和感觉对我的窗口来说真的不是那么好。如果有人有一个自定义大小边框的完整示例,我将不胜感激。@user2018626:您是否仅限于WinAPI?从技术上讲,是的。但如果MFC能让我的生活更轻松,我会尝试一下。如果你的应用程序不是MFC应用程序,你就不能很容易地融入MFC。例如,如果不实现
CWinApp
-派生类,就不能仅将MFC用于窗口创建。如果您需要一个库来简化窗口处理,可以使用WTL。如果您可以并且希望使用第三方库。@user2018626在MFC中,您可以轻松创建无边框窗口,在角落添加调整大小图片,并处理鼠标按下事件。发生这种情况时,只需根据窗口的绝对位置和当前光标位置调整窗口大小。屏幕截图中的紫色部分不是边框的一部分。这是一个好主意。自定义非客户端区域(边框是其中的一部分)不同于自定义客户端区域。请看,我认为这很难。当您向左调整Visual Studio Express 2012主窗口的大小时,实际上可以看到其背后的背景像素。我一点也不喜欢,你的里程可能会有所不同。