[ad_1]
我在应用程序中使用 LOADCURSOR 函数时遇到了一些困难。 我的应用程序使用警告级别 4 并将警告视为错误。 不幸的是,由于下述原因,Visual Studio 给出了编译警告。 我该如何解决这个问题?
相关代码及编译错误如下所示:
HCURSOR hCursor = LoadCursor(hInst, MAKEINTRESOURCE(IDC_WAIT));
HCURSOR hOldCursor = SetCursor(hCursor);
//some codes loading codes
SetCursor(hOldCursor);
6:13:06:168 1>C:\Users\HP\source\repos\ResultSheets\ResultSheets.cpp(2038,45):警告 C4302:“类型转换”:从“LPWSTR”截断为“WORD”
16:13:06:168 1>C:\Users\HP\source\repos\ResultSheets\ResultSheets.cpp(2167,53):警告 C4302:“类型转换”:从“LPWSTR”截断为“WORD”
我尝试过的:
我一直在思考编译错误。
解决方案1
错误消息告诉您代码中发生错误的位置:第 2038 行,第 45 列; 和第 2167 行第 53 列 – 但您的代码片段仅显示其中之一(可能)。 使用编辑器转到该行(双击“错误”面板中的消息,它将跳转到那里,或者使用 CTRL+G
转到特定的行号)。
一旦您知道该消息与哪一行相关联,您就可以确定正在指定该行的确切部分。 如果我必须猜测的话,那就是 MAKEINTRESOURCE
调用,因为该宏执行各种转换,这些转换可能与这里无关 – 它定义为
#define MAKEINTRESOURCE(i) (LPTSTR) ((DWORD) ((WORD) (i)))
IDC_WAIT 已定义为:
#define IDC_WAIT MAKEINTRESOURCE(32514)
所以很可能如果你删除 MAKEINTRESOURCE
调用您的代码错误就会消失。
我还猜测您从不像您那么挑剔的人那里获取了代码:他们可能会忽略您不会(我也不会)的警告,因此从未将其视为问题。
还可以禁用特定代码块的特定警告: 警告#pragma | 微软学习[^] 如果你找不到其他方法来处理它。
[ad_2]
コメント