鱼C论坛

 找回密码
 立即注册
查看: 1577|回复: 3

[已解决]为什么我的win32Application文件没有显示打印的东西呢

[复制链接]
发表于 2020-9-11 09:12:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我想要接受到鼠标对我自己创建窗口的消息类型用十六进制打印出来,可是我的控制台什么也没有,这个要怎么整啊?
类似想要打印这种东西
                        TCHAR ch[0x20];
                        sprintf(ch,"Error, %d\n",GetLastError());
                        OutputDebugString(ch);
如果有错误,控制台也没什么反应,什么也不打印,黑乎乎的一片~
最佳答案
2023-11-28 05:37:45
小甲鱼的二师兄 发表于 2023-11-28 05:37
我想要接受到鼠标对我自己创建窗口的消息类型用十六进 ...

如果你想在控制台中打印消息,可以使用`printf`函数,而不是`OutputDebugString`函数。以下是一个示例代码,可以接收鼠标消息并将消息类型以十六进制形式打印到控制台中:
  1. #include <windows.h>
  2. LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
  3.     switch (msg) {
  4.         case WM_MOUSEMOVE:
  5.             printf("WM_MOUSEMOVE: 0x%X\n", msg);
  6.             break;
  7.         case WM_LBUTTONDOWN:
  8.             printf("WM_LBUTTONDOWN: 0x%X\n", msg);
  9.             break;
  10.         case WM_RBUTTONDOWN:
  11.             printf("WM_RBUTTONDOWN: 0x%X\n", msg);
  12.             break;
  13.         // 其他鼠标消息类型...
  14.         default:
  15.             return DefWindowProc(hwnd, msg, wParam, lParam);
  16.     }
  17.     return 0;
  18. }
  19. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
  20.     HWND hwnd;
  21.     MSG Msg;
  22.     WNDCLASS wndclass;
  23.     // 注册窗口类
  24.     wndclass.style = CS_HREDRAW | CS_VREDRAW;
  25.     wndclass.lpfnWndProc = WndProc;
  26.     wndclass.cbClsExtra = 0;
  27.     wndclass.cbWndExtra = 0;
  28.     wndclass.hInstance = hInstance;
  29.     wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  30.     wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
  31.     wndclass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
  32.     wndclass.lpszMenuName = NULL;
  33.     wndclass.lpszClassName = TEXT("MyWindowClass");
  34.     if (!RegisterClass(&wndclass)) {
  35.         MessageBox(NULL, TEXT("窗口类注册失败!"), TEXT("错误"), MB_ICONERROR);
  36.         return 0;
  37.     }
  38.     // 创建窗口
  39.     hwnd = CreateWindow(TEXT("MyWindowClass"),
  40.         TEXT("我的窗口"),
  41.         WS_OVERLAPPEDWINDOW,
  42.         CW_USEDEFAULT,
  43.         CW_USEDEFAULT,
  44.         500,
  45.         400,
  46.         NULL,
  47.         NULL,
  48.         hInstance,
  49.         NULL);
  50.     if (hwnd == NULL) {
  51.         MessageBox(NULL, TEXT("窗口创建失败!"), TEXT("错误"), MB_ICONERROR);
  52.         return 0;
  53.     }
  54.     // 显示窗口
  55.     ShowWindow(hwnd, nCmdShow);
  56.     UpdateWindow(hwnd);
  57.     // 消息循环
  58.     while (GetMessage(&Msg, NULL, 0, 0)) {
  59.         TranslateMessage(&Msg);
  60.         DispatchMessage(&Msg);
  61.     }
  62.     return Msg.wParam;
  63. }
复制代码

以上代码使用了Windows API,创建了一个窗口,并通过`WndProc`函数处理窗口消息。在`WndProc`函数中,我们针对不同的鼠标消息类型打印出相应的消息类型的十六进制值。控制台将会显示这些消息。

需要注意的是,如果你希望在控制台黑乎乎的一片时也能显示输出,可以使用`AllocConsole`函数来创建一个新的控制台窗口,然后再调用`printf`函数。

希望这个代码能够帮到你!

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-16 23:23:53 From FishC Mobile | 显示全部楼层
这个是输出到了调试区,不是输出到屏幕缓冲区,你可以在调试区看到调试信息,一些调试软件应该也可以看到输出的调试信息。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-28 05:37:27 | 显示全部楼层
我想要接受到鼠标对我自己创建窗口的消息类型用十六进制打印出来,可是我的控制台什么也没有,这个要怎么整啊?
类似想要打印这种东西
                        TCHAR ch[0x20];
                        sprintf(ch,"Error, %d\n",GetLastError());
                        OutputDebugString(ch);
如果有错误,控制台也没什么反应,什么也不打印,黑乎乎的一片~

@FishC_GPT
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-28 05:37:45 | 显示全部楼层    本楼为最佳答案   
小甲鱼的二师兄 发表于 2023-11-28 05:37
我想要接受到鼠标对我自己创建窗口的消息类型用十六进 ...

如果你想在控制台中打印消息,可以使用`printf`函数,而不是`OutputDebugString`函数。以下是一个示例代码,可以接收鼠标消息并将消息类型以十六进制形式打印到控制台中:
  1. #include <windows.h>
  2. LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
  3.     switch (msg) {
  4.         case WM_MOUSEMOVE:
  5.             printf("WM_MOUSEMOVE: 0x%X\n", msg);
  6.             break;
  7.         case WM_LBUTTONDOWN:
  8.             printf("WM_LBUTTONDOWN: 0x%X\n", msg);
  9.             break;
  10.         case WM_RBUTTONDOWN:
  11.             printf("WM_RBUTTONDOWN: 0x%X\n", msg);
  12.             break;
  13.         // 其他鼠标消息类型...
  14.         default:
  15.             return DefWindowProc(hwnd, msg, wParam, lParam);
  16.     }
  17.     return 0;
  18. }
  19. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
  20.     HWND hwnd;
  21.     MSG Msg;
  22.     WNDCLASS wndclass;
  23.     // 注册窗口类
  24.     wndclass.style = CS_HREDRAW | CS_VREDRAW;
  25.     wndclass.lpfnWndProc = WndProc;
  26.     wndclass.cbClsExtra = 0;
  27.     wndclass.cbWndExtra = 0;
  28.     wndclass.hInstance = hInstance;
  29.     wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  30.     wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
  31.     wndclass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
  32.     wndclass.lpszMenuName = NULL;
  33.     wndclass.lpszClassName = TEXT("MyWindowClass");
  34.     if (!RegisterClass(&wndclass)) {
  35.         MessageBox(NULL, TEXT("窗口类注册失败!"), TEXT("错误"), MB_ICONERROR);
  36.         return 0;
  37.     }
  38.     // 创建窗口
  39.     hwnd = CreateWindow(TEXT("MyWindowClass"),
  40.         TEXT("我的窗口"),
  41.         WS_OVERLAPPEDWINDOW,
  42.         CW_USEDEFAULT,
  43.         CW_USEDEFAULT,
  44.         500,
  45.         400,
  46.         NULL,
  47.         NULL,
  48.         hInstance,
  49.         NULL);
  50.     if (hwnd == NULL) {
  51.         MessageBox(NULL, TEXT("窗口创建失败!"), TEXT("错误"), MB_ICONERROR);
  52.         return 0;
  53.     }
  54.     // 显示窗口
  55.     ShowWindow(hwnd, nCmdShow);
  56.     UpdateWindow(hwnd);
  57.     // 消息循环
  58.     while (GetMessage(&Msg, NULL, 0, 0)) {
  59.         TranslateMessage(&Msg);
  60.         DispatchMessage(&Msg);
  61.     }
  62.     return Msg.wParam;
  63. }
复制代码

以上代码使用了Windows API,创建了一个窗口,并通过`WndProc`函数处理窗口消息。在`WndProc`函数中,我们针对不同的鼠标消息类型打印出相应的消息类型的十六进制值。控制台将会显示这些消息。

需要注意的是,如果你希望在控制台黑乎乎的一片时也能显示输出,可以使用`AllocConsole`函数来创建一个新的控制台窗口,然后再调用`printf`函数。

希望这个代码能够帮到你!

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-17 00:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表