4 c++ user-interface winapi message mouse-cursor
我创建了一个无边框窗口,它使用wndProc()强制WM_NCHITTEST casereturn 的函数HTCAPTION;,该函数允许用户拖动窗口,无论光标位于何处。
问题是我已经设置了自定义光标,但是使用上述方法,光标始终设置回IDC_ARROW。
我该如何解决?
编辑:我也尝试过SetCursor()在 中使用WM_NCHITTEST case,但没有成功。
您可以使用 WM_SETCURSOR 消息来覆盖光标。lParam 的 LOWORD 指示命中测试代码,即您使用 WM_NCHITTEST 处理程序更改的代码。这效果很好:
static HCURSOR CustomCursor;
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_NCHITTEST: {
LRESULT result = DefWindowProc(hWnd, message, wParam, lParam);
if (result == HTCLIENT) result = HTCAPTION;
return result;
}
case WM_SETCURSOR:
if (LOWORD(lParam) == HTCAPTION) {
SetCursor(CustomCursor);
return TRUE;
}
return DefWindowProc(hWnd, message, wParam, lParam);
// etc...
}
Run Code Online (Sandbox Code Playgroud)
在窗口初始化中初始化 CustomCursor。说:
CustomCursor = LoadCursor(hInstance, MAKEINTRESOURCE(IDC_SIZEALL));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4509 次 |
| 最近记录: |