- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 SDL2 开发 Windows 应用程序。我想更改光标显示。我使用示例创建了光标,完全复制自 SDL_CreateCursor
然后在 SDL_MOUSEMOTION
事件中调用 SDL_SetCursor
,但似乎运气不好。
所以我直接跳进:
SDL_Cursor * cursor = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_HAND);
SDL_SetCursor(cursor);
官方 wiki 将 SDL_CreateSystemCursor
报告为 TODO 状态。我查看了源代码,它似乎已经实现并且可以创建一个有效的游标。但是,光标显示也没有改变。
我该怎么办?
最佳答案
在您提出问题九年后,我在这里寻找对此的答复,因为我遇到了同样的问题。我的问题,我也确信你的问题如下:我通过 SDL_CreateWindowFrom 从现有的 HWND 窗口创建了一个 SDL_Window。现有的 HWND 窗口首先使用 RegisterClassEx 注册,并配置为将十字线作为鼠标指针。
后来,创建了现有 HWND 的 SDL_Window,当我将鼠标指针移到窗口中时,它瞬间变为箭头,然后立即变为十字准线。对于这种情况不会发生,在创建 SDL_Window 之后我添加了:
SDL_Cursor* cursor;
cursor = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_CROSSHAIR);
SDL_SetCursor(cursor);
完整代码如下:
#include <SDL.h>
#include <SDL_syswm.h>
#include <iostream>
#define WINDOW_CLASS_NAME L"WindowClassName"
#define APP_ICON L"AppIcon.ico"
UINT const WMAPP_NOTIFYCALLBACK = WM_APP + 1;
HINSTANCE g_hInst = NULL;
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WMAPP_NOTIFYCALLBACK:
switch (lParam)
{
case WM_RBUTTONUP:
// Right mouse button upped
break;
case WM_MBUTTONUP:
// Middle button upped
break;
case WM_LBUTTONUP:
// Left button upped
break;
}
break;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}
return 0;
}
void RegisterWindowClass(PCWSTR pszClassName, PCWSTR pszMenuName, WNDPROC lpfnWndProc)
{
WNDCLASSEX wcex = { sizeof(wcex) };
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = lpfnWndProc;
wcex.hInstance = g_hInst;
wcex.hIcon = LoadIcon(g_hInst, APP_ICON);
wcex.hCursor = LoadCursor(NULL, IDC_CROSS); // <-- CROSSHAIR AS MOUSE POINTER
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wcex.lpszMenuName = pszMenuName;
wcex.lpszClassName = pszClassName;
RegisterClassEx(&wcex);
}
int main(int argc, char* argv[])
{
if (SDL_Init(SDL_INIT_VIDEO) < 0)
{
std::cout << "SDL_Init error: " << SDL_GetError() << std::endl;
return 1;
}
g_hInst = GetModuleHandle(NULL);
RegisterWindowClass(WINDOW_CLASS_NAME, NULL, WndProc);
HWND hwnd = CreateWindow(WINDOW_CLASS_NAME, L"TEST", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, 250, 200, NULL, NULL, g_hInst, NULL);
SDL_Window* window = SDL_CreateWindowFrom(hwnd);
SDL_UpdateWindowSurface(window);
SDL_ShowWindow(window);
// THIS IS NECESSARY FOR THE MOUSE CURSOR ESTABLISHED IN RegisterWindowClass TO BE MAINTAINED
SDL_Cursor* cursor;
cursor = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_CROSSHAIR);
SDL_SetCursor(cursor);
//
bool running = true;
SDL_Event e;
while (running)
{
while (SDL_PollEvent(&e))
{
if (e.type == SDL_QUIT) running = false;
}
}
SDL_DestroyWindow(window);
DestroyWindow(hwnd);
UnregisterClass(WINDOW_CLASS_NAME, g_hInst);
SDL_Quit();
return 0;
}
如您所见,调用 SDL_SetCursor 后,不必在循环的每次迭代中都调用它。
关于c++ - 设置游标不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15585715/
我正在尝试使用游标遍历表: DEClARE @ProjectOID as nvarchar (100) DECLARE @TaskOID as nvarchar (100) DECLARE TaskO
使用 JOprionPane 时,光标出现了一些问题。我将光标设置到 pharent 框架,然后使用这个显示一个对话框: Object[] possibilities = {"ham", "spam"
我想将数据从一个表(原始数据,所有列都是 VARCHAR)复制到另一个表(使用相应的列格式进行格式化)。 为了将数据从 rawdata 表复制到 formatted 表中,我使用游标来识别受影响的行。
我先走了 我 100% 属于集合运算阵营。但是当设置逻辑时会发生什么在整个所需的输入域上进行检索会导致如此大的检索,以至于查询显着减慢,变得缓慢,或者基本上需要无限的时间? 在这种情况下,我将使用可能
为什么我不能这样做?我想从 TABLEA 中搜索大于光标值的最接近的值,对两者执行平均函数并将结果放入 test3 中。我收到错误代码 1054 未知列“Xnearest in 'field list
我希望以下存储例程返回一系列行,但它只返回 1: CREATE PROCEDURE example() BEGIN DECLARE current_id INT;
我有一张代表患者体检的表,它有检查 ID 和患者 ID。 我想逐行浏览表格并获取每个患者 ID 并比较其不同的咨询,看看它是否被视为“new_attack”。我正在处理疟疾疾病,我们认为每个在过去 6
如文档所述here ,我需要声明一个在打开时接受参数的游标。 我的查询类似于: DECLARE cur CURSOR (argName character varying) FOR SELECT *
我正在尝试使用 PostgreSQL 学习基本游标。这是我的脚本: DECLARE cur_employees CURSOR FOR SELECT * FROM employee CLOS
*DELIMITER // create procedure test(OUT l_out INT) begin DECLARE done INT DEFAULT FALSE; declare l_s
来自 psycopg2 文档: When a database query is executed, the Psycopg cursor usually fetches all the record
我正在使用 while 循环遍历游标,然后输出数据库中每个点的经度和纬度值。 出于某种原因,它没有返回光标中的最后一组(或第一个取决于我是否使用 Cursor.MoveToLast)经度和纬度值。 这
不知道有没有人试过全新的PHPStorm 4 , 但我遇到了这个新版本的问题,而我以前的主要版本 (PHPStorm 3) 没有。 基本上,当我单击代码 View 空白处的任意位置时,光标会设置在该位
mysql的存储过程、游标 、事务实例详解 下面是自己曾经编写过的mysql数据库存储过程,留作存档,以后用到的时候拿来参考。 其中,涉及到了存储过程、游标(双层循环)、事务。 【说明】:代码
Mysql的存储过程是从版本5才开始支持的,所以目前一般使用的都可以用到存储过程。今天分享下自己对于Mysql存储过程的认识与了解。 一些简单的调用以及语法规则这里就不在赘述,网上有许多例子。这里
我正在使用 SQL Server,我有一个包含 3 列(时间序列)的表 data ,带日期,hour开始,AwardStatus . 大部分奖励状态是随机生成的。有两种选择,授予或未授予。 但是,业务
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
Why am getting duplicate records ? pls correct me.Thanks in Advance. declare clazzes_rec clazzes%r
Why am getting duplicate records ? pls correct me.Thanks in Advance. declare clazzes_rec clazzes%r
我需要在数据表中设置一个非唯一标识符。这在组内是连续的,即。对于每个组,ID 应从 1 开始,并以 1 为增量递增,直到该组的最后一行。 下表对此进行了说明。 “新 ID”是我需要填充的列。 Uniq
我是一名优秀的程序员,十分优秀!