|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我想要接受到鼠标对我自己创建窗口的消息类型用十六进制打印出来,可是我的控制台什么也没有,这个要怎么整啊?
类似想要打印这种东西
TCHAR ch[0x20];
sprintf(ch,"Error, %d\n",GetLastError());
OutputDebugString(ch);
如果有错误,控制台也没什么反应,什么也不打印,黑乎乎的一片~
如果你想在控制台中打印消息,可以使用`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官方接口),如未能正确解答您的问题,请继续追问。
|
|