Bagikan melalui


C28623

peringatan C28623: Pemeran koordinat GetMessagePos() yang tidak ditandatangani. Gunakan GET_X_LPARAM/GET_Y_LPARAM alih-alih LOWORD/HIWORD

Sistem dengan beberapa monitor dapat memiliki koordinat x negatif dan koordinat y. Pada sistem tersebut, GetMessagePos dapat mengembalikan nilai negatif. Namun, karena LOWORD dan HIWORD memperlakukan koordinat sebagai jumlah yang tidak ditandatangani, koordinat tersebut tidak boleh digunakan.

Contoh

PREfast melaporkan peringatan untuk contoh berikut.

DWORD dw = GetMessagePos();
POINT ppt;

ppt.x = LOWORD(dw);
ppt.y = HIWORD(dw);

Contoh berikut menghindari kesalahan.

DWORD dw = GetMessagePos();
POINT ppt;

ppt.x = GET_X_LPARAM(dw);
ppt.y = GET_Y_LPARAM(dw);