【发布时间】:2016-11-17 20:16:13
【问题描述】:
由于某种原因,当我尝试使用以下代码在给定的 WIN32 窗口中输出鼠标光标的位置时:
//Global Variable
POINT cursorLocation;
// Win32 Windowing subsystem code redacted
LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
cursorLocation.x = GET_X_LPARAM(lParam);
cursorLocation.y = GET_Y_LPARAM(lParam);
switch(message){
case WM_MOUSEMOVE:
// mouse movement handle
OutputDebugString(cursorLocation.x + "," + cursorLocation.y);
OutputDebugString("\n");
// WM_MOUSEMOVE break
break;
}
}
现在,当我运行程序并移动鼠标时,控制台会记录以下文本:
较小的数据类型导致数据丢失。
如果这是故意的,您应该使用适当的位掩码来掩盖演员表的来源。
例如:char c = (i & 0xFF);
以这种方式更改代码不会影响生成的优化代码的质量。
我什至尝试将传递给OutputDebugString 的变量类型转换为LONG,因为那是POINT 类中变量的类型并且没有区别。
有谁知道如何将值通过GET_X_LPARAM 和GET_Y_LPARAM 传递到调试控制台?
谢谢。
【问题讨论】: