[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 – しかし、あなたのコード断片はそれらのうちの 1 つしか示していません (おそらく)。 エディタを使用してその行に移動します ([エラー]パネルでメッセージをダブルクリックするとそこにジャンプします。または、 CTRL+G
特定の行番号に移動します)。
どのメッセージがどの行に関連付けられているかがわかれば、その行のどの部分が指定されているかを正確に特定できます。 推測しなければならないとしたら、それは MAKEINTRESOURCE
このマクロは、ここではおそらく無関係なさまざまなキャストを実行するため、呼び出します。次のように定義されています。
#define MAKEINTRESOURCE(i) (LPTSTR) ((DWORD) ((WORD) (i)))
IDC_WAIT はすでに次のように定義されています。
#define IDC_WAIT MAKEINTRESOURCE(32514)
したがって、を削除すると、 MAKEINTRESOURCE
コードを呼び出すとエラーは消えます。
また、あなたほど気難しい人ではない人からコードを入手したのではないかと思います。彼らはあなたが無視する警告を無視するかもしれないので (私も無視します)、それを問題とは考えませんでした。
特定のコード部分に対する特定の警告を無効にすることもできます。 警告 #pragma | Microsoft Learn[^] 他に対処する方法が見つからない場合。
[ad_2]
コメント