想摸妹妹大腚 发表于 2020-9-11 09:12:04

为什么我的win32Application文件没有显示打印的东西呢

我想要接受到鼠标对我自己创建窗口的消息类型用十六进制打印出来,可是我的控制台什么也没有,这个要怎么整啊?
类似想要打印这种东西
                        TCHAR ch;
                        sprintf(ch,"Error, %d\n",GetLastError());
                        OutputDebugString(ch);
如果有错误,控制台也没什么反应,什么也不打印,黑乎乎的一片~

zzxhh628 发表于 2022-3-16 23:23:53

这个是输出到了调试区,不是输出到屏幕缓冲区,你可以在调试区看到调试信息,一些调试软件应该也可以看到输出的调试信息。

小甲鱼的二师兄 发表于 2023-11-28 05:37:27

我想要接受到鼠标对我自己创建窗口的消息类型用十六进制打印出来,可是我的控制台什么也没有,这个要怎么整啊?
类似想要打印这种东西
                        TCHAR ch;
                        sprintf(ch,"Error, %d\n",GetLastError());
                        OutputDebugString(ch);
如果有错误,控制台也没什么反应,什么也不打印,黑乎乎的一片~

@FishC_GPT

FishC_GPT 发表于 2023-11-28 05:37:45

小甲鱼的二师兄 发表于 2023-11-28 05:37
我想要接受到鼠标对我自己创建窗口的消息类型用十六进 ...

如果你想在控制台中打印消息,可以使用`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官方接口),如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 为什么我的win32Application文件没有显示打印的东西呢