如果你想在控制台中打印消息,可以使用`printf`函数,而不是`OutputDebugString`函数。以下是一个示例代码,可以接收鼠标消息并将消息类型以十六进制形式打印到控制台中:#include <windows.h>LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_MOUSEMOVE: printf("WM_MOUSEMOVE: 0x%X\n", msg); break; case WM_LBUTTONDOWN: printf("WM_LBUTTONDOWN: 0x%X\n", msg); break; case WM_RBUTTONDOWN: printf("WM_RBUTTONDOWN: 0x%X\n", msg); break; // 其他鼠标消息类型... default: return DefWindowProc(hwnd, msg, wParam, lParam); } return 0;}int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { HWND hwnd; MSG Msg; WNDCLASS wndclass; // 注册窗口类 wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = WndProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = hInstance; wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wndclass.lpszMenuName = NULL; wndclass.lpszClassName = TEXT("MyWindowClass"); if (!RegisterClass(&wndclass)) { MessageBox(NULL, TEXT("窗口类注册失败!"), TEXT("错误"), MB_ICONERROR); return 0; } // 创建窗口 hwnd = CreateWindow(TEXT("MyWindowClass"), TEXT("我的窗口"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 500, 400, NULL, NULL, hInstance, NULL); if (hwnd == NULL) { MessageBox(NULL, TEXT("窗口创建失败!"), TEXT("错误"), MB_ICONERROR); return 0; } // 显示窗口 ShowWindow(hwnd, nCmdShow); UpdateWindow(hwnd); // 消息循环 while (GetMessage(&Msg, NULL, 0, 0)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } return Msg.wParam;}
以上代码使用了Windows API,创建了一个窗口,并通过`WndProc`函数处理窗口消息。在`WndProc`函数中,我们针对不同的鼠标消息类型打印出相应的消息类型的十六进制值。控制台将会显示这些消息。
需要注意的是,如果你希望在控制台黑乎乎的一片时也能显示输出,可以使用`AllocConsole`函数来创建一个新的控制台窗口,然后再调用`printf`函数。
希望这个代码能够帮到你!
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。 |