Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 永久更改光标_C++_Api_Winapi - Fatal编程技术网

C++ 永久更改光标

C++ 永久更改光标,c++,api,winapi,C++,Api,Winapi,我正在尝试将光标永久更改为其他光标 当我这样做时,我得到的只是新光标,直到我再次移动光标 case WM_RBUTTONDOWN: cursor = LoadCursor (NULL, IDC_CROSS) ; SetCursor(cursor); break; 我如何改变它,使其成为永久性的。。我知道这和wndclass有关 当我在wndproc中创建窗口时,我对IDC_ARROW说了wndclass.hIcon,但我不能在WM_RBUTTONDOWN

我正在尝试将光标永久更改为其他光标

当我这样做时,我得到的只是新光标,直到我再次移动光标

  case WM_RBUTTONDOWN:
      cursor = LoadCursor (NULL, IDC_CROSS) ;
      SetCursor(cursor);
      break;
我如何改变它,使其成为永久性的。。我知道这和wndclass有关

当我在wndproc中创建窗口时,我对IDC_ARROW说了wndclass.hIcon,但我不能在WM_RBUTTONDOWN中调用wndclass

有什么帮助吗?

来自

如果应用程序必须在窗口中设置游标,请确保指定窗口类的类游标设置为NULL如果类光标不为空,则每次移动鼠标时系统都会恢复类光标。


您需要从窗口类中删除任何指定的光标。

每次鼠标移动都会向窗口发送一条消息;默认窗口过程将使用配置的光标进行响应。替代以返回新光标。

谢谢。这就是我想要的答案!=)。事实上,我相信德鲁·多尔曼在这个案例中更为正确。虽然这两种解决方案都有效,但我相信设置光标一次(或至少“当您执行某些操作时”)是正确的,而不是每次鼠标移动(在我使用的图形卡上,设置光标不是一个简单的操作-尽管它“没有操作”如果你试着像以前一样设置,那么仅仅是回到司机身边,然后再返回,即使不是数千个时钟周期,也会有数百个时钟周期)。@Matstpeterson,我认为他的答案不起作用,因为一旦你离开当前窗口,光标会自动重置,当你将其向后移动时,光标不会恢复。每次收到WM_SETCURSOR时,您都需要对其做出响应。好吧,也许您需要“两个”答案。我编写测试代码来测试游标(以及实际操作游标的驱动程序代码),但这大约是10年前的事了。但我不记得每次移动时都要设置“光标是什么形状”——事实上,我很确定这只是一次“让我的光标成为这个形状”,然后我会四处移动它,检查一切是否正常,然后选择另一个(我也有一些奇怪的光标——比如一个500像素的带alpha混合的圆圈)@matsperderson也许你很幸运,但是通过
WM_SETCURSOR
设置光标是正确的。如果你认为这是低效的,那么很抱歉,但这是Windows的工作方式。即使您不处理
WM_SETCURSOR
,Windows仍将生成所有
WM_SETCURSOR
消息,然后默认窗口进程将其设置为窗口的类游标。(这就是说,我希望将光标设置为当前光标的尝试是便宜的,因此它可能不会像您所想的那样糟糕。)