[ad_1]
Tôi gặp một chút khó khăn khi sử dụng hàm LOADCURSOR trong ứng dụng của mình. Ứng dụng của tôi sử dụng cảnh báo cấp 4 và coi cảnh báo là lỗi. Thật không may, vì những lý do nêu dưới đây, studio trực quan đã đưa ra cảnh báo về việc biên soạn. Làm thế nào tôi có thể giải quyết tình hình?
Các mã liên quan và lỗi biên dịch được hiển thị bên dưới:
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): cảnh báo C4302: ‘gõ cast’: cắt bớt từ ‘LPWSTR’ thành ‘WORD’
16:13:06:168 1>C:\Users\HP\source\repos\ResultSheets\ResultSheets.cpp(2167,53): cảnh báo C4302: ‘gõ cast’: cắt bớt từ ‘LPWSTR’ thành ‘WORD’
Những gì tôi đã thử:
Tôi đã suy nghĩ về lỗi biên dịch.
Giải pháp 1
Thông báo lỗi cho bạn biết lỗi xảy ra ở đâu trong mã của bạn: dòng 2038, cột 45; và dòng 2167, cột 53 – nhưng đoạn mã của bạn chỉ hiển thị một trong số đó (có thể). Sử dụng trình chỉnh sửa để đi tới dòng đó (nhấp đúp vào thông báo trong bảng Lỗi và nó sẽ chuyển đến đó hoặc sử dụng CTRL+G
để đi đến một số dòng cụ thể).
Khi bạn biết dòng nào được liên kết với thông báo, bạn có thể xác định chính xác phần nào của dòng đó đang được chỉ định. Nếu tôi phải đoán thì đó sẽ là MAKEINTRESOURCE
gọi vì macro đó thực hiện nhiều kiểu khác nhau có thể không liên quan ở đây – nó được định nghĩa là
#define MAKEINTRESOURCE(i) (LPTSTR) ((DWORD) ((WORD) (i)))
Và IDC_WAIT đã được định nghĩa là:
#define IDC_WAIT MAKEINTRESOURCE(32514)
vì vậy rất có thể nếu bạn loại bỏ MAKEINTRESOURCE
gọi mã của bạn, lỗi sẽ biến mất.
Tôi cũng đoán rằng bạn đã lấy mã từ một người không khó tính như bạn: họ có thể bỏ qua những cảnh báo mà bạn không (và tôi cũng vậy) nên chưa bao giờ coi đó là một vấn đề.
Cũng có thể tắt các cảnh báo cụ thể cho một đoạn mã cụ thể: cảnh báo #pragma | Microsoft Tìm hiểu[^] nếu bạn không thể tìm được cách nào khác để giải quyết nó.
[ad_2]
コメント