Mengapa visual studio memberikan peringatan kompilasi ketika fungsi kursor tidak pernah dimuat digunakan?

pemrograman


Saya mengalami sedikit kesulitan dalam menggunakan fungsi LOADCURSOR di aplikasi saya. Aplikasi saya menggunakan waring level 4 dan memperlakukan peringatan sebagai kesalahan. Sayangnya, karena alasan yang disebutkan di bawah, visual studio memberikan peringatan kompilasi. Bagaimana saya bisa mengatasi situasi ini?

Kode yang relevan dan kesalahan kompilasi ditunjukkan di bawah ini:

C++
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): peringatan C4302: ‘type cast’: pemotongan dari ‘LPWSTR’ ke ‘WORD’
16:13:06:168 1>C:\Users\HP\source\repos\ResultSheets\ResultSheets.cpp(2167,53): peringatan C4302: ‘type cast’: pemotongan dari ‘LPWSTR’ ke ‘WORD’

Apa yang saya coba:

Saya telah memikirkan tentang kesalahan kompilasi.

Solusi 1

Pesan kesalahan memberitahu Anda di mana kesalahan terjadi dalam kode Anda: baris 2038, kolom 45; dan baris 2167, kolom 53 – tetapi fragmen kode Anda hanya menampilkan salah satunya (mungkin). Gunakan editor untuk menuju ke baris tersebut (klik dua kali pesan di panel Kesalahan dan pesan akan melompat ke sana, atau gunakan CTRL+G untuk pergi ke nomor baris tertentu).
Setelah Anda mengetahui baris mana yang dikaitkan dengan pesan, Anda dapat mengidentifikasi bagian mana dari baris tersebut yang sedang ditentukan. Jika aku harus menebaknya, itu adalah MAKEINTRESOURCE panggilan karena makro itu melakukan berbagai pemeran yang mungkin tidak relevan di sini – ini didefinisikan sebagai

C++
#define MAKEINTRESOURCE(i) (LPTSTR) ((DWORD) ((WORD) (i)))

Dan IDC_WAIT sudah didefinisikan sebagai:

C++
#define IDC_WAIT            MAKEINTRESOURCE(32514)

jadi kemungkinan besar jika Anda menghapusnya MAKEINTRESOURCEpanggil kode Anda, kesalahannya akan hilang.

Saya juga menduga Anda mengambil kode dari seseorang yang tidak terlalu teliti seperti Anda: mereka mungkin mengabaikan peringatan yang tidak Anda (dan saya juga) jadi tidak pernah melihatnya sebagai masalah.
Anda juga dapat menonaktifkan peringatan spesifik untuk potongan kode tertentu: peringatan #pragma | Microsoft Belajar[^] jika Anda tidak dapat menemukan cara lain untuk menghadapinya.

コメント

タイトルとURLをコピーしました