鱼C论坛

 找回密码
 立即注册
查看: 1221|回复: 6

[已解决]WinMain批注不一致

[复制链接]
发表于 2022-6-3 21:50:32 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 Luxifer9v9 于 2022-6-3 21:55 编辑

#include <windows.h>
#pragma comment (lib, "winmm.lib")

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
    static TCHAR szAppName[] = TEXT("Hint!");
    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)GetStockObject(WHITE_BRUSH);
    wndclass.lpszMenuName = NULL;
    wndclass.lpszClassName = szAppName;

    if (!RegisterClass(&wndclass))
    {
        MessageBox(NULL, TEXT("这个程序需要在 Windows NT 才能执行!"), szAppName, MB_ICONERROR);
        return 0;
    }

    hwnd = CreateWindow(szAppName,
        TEXT("Window"),
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        NULL,
        NULL,
        hInstance,
        NULL);

    ShowWindow(hwnd, iCmdShow);
    UpdateWindow(hwnd);

    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return msg.wParam;
}


LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HDC hdc;
    PAINTSTRUCT ps;
    RECT rect;

    switch (message)
    {
    case WM_CREATE:
        PlaySound(TEXT("C:\\Users\\Constantine\\Music\\canyons.mp3"), NULL, SND_FILENAME | SND_ASYNC);
        return 0;

    case WM_PAINT:
        hdc = BeginPaint(hwnd, &ps);
        GetClientRect(hwnd, &rect);
        TextOut(hdc, 400, 300, TEXT("客户区"), 3);
        EndPaint(hwnd, &ps);
        return 0;

    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }

    return DefWindowProc(hwnd, message, wParam, lParam);
}
最佳答案
2022-6-3 22:22:16
库文件除了
  1. #pragma comment (lib, "winmm.lib")
复制代码

外,还必须添加下面 2 个库
  1. #pragma comment(lib, "gdi32.lib")
  2. #pragma comment(lib, "user32.lib")
复制代码

然后,在 VC2022 只要用命令行就可以编译:
  1. D:\[00.Exercise]\[C]>cl w.c
  2. 用于 x86 的 Microsoft (R) C/C++ 优化编译器 19.31.31107 版
  3. 版权所有(C) Microsoft Corporation。保留所有权利。

  4. w.c
  5. Microsoft (R) Incremental Linker Version 14.31.31107.0
  6. Copyright (C) Microsoft Corporation.  All rights reserved.

  7. /out:w.exe
  8. w.obj

  9. D:\[00.Exercise]\[C]>
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-6-3 21:56:10 | 显示全部楼层
这是什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-3 21:58:46 | 显示全部楼层
vs2019说我WinMain批注不一致,我按照网上说的把  项目属性-->系统-->子系统  里的窗口从“控制台”改为了“窗口”还是没有用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-3 22:22:16 | 显示全部楼层    本楼为最佳答案   
库文件除了
  1. #pragma comment (lib, "winmm.lib")
复制代码

外,还必须添加下面 2 个库
  1. #pragma comment(lib, "gdi32.lib")
  2. #pragma comment(lib, "user32.lib")
复制代码

然后,在 VC2022 只要用命令行就可以编译:
  1. D:\[00.Exercise]\[C]>cl w.c
  2. 用于 x86 的 Microsoft (R) C/C++ 优化编译器 19.31.31107 版
  3. 版权所有(C) Microsoft Corporation。保留所有权利。

  4. w.c
  5. Microsoft (R) Incremental Linker Version 14.31.31107.0
  6. Copyright (C) Microsoft Corporation.  All rights reserved.

  7. /out:w.exe
  8. w.obj

  9. D:\[00.Exercise]\[C]>
复制代码

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

使用道具 举报

 楼主| 发表于 2022-6-3 23:19:19 From FishC Mobile | 显示全部楼层
本帖最后由 Luxifer9v9 于 2022-6-4 07:41 编辑

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-6-4 07:40:41 From FishC Mobile | 显示全部楼层
jackz007 发表于 2022-6-3 22:22
库文件除了

外,还必须添加下面 2 个库

加了,还是提示我WinMian批注不一致
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-4 12:01:11 | 显示全部楼层
本帖最后由 jackz007 于 2022-6-4 12:08 编辑
Luxifer9v9 发表于 2022-6-4 07:40
加了,还是提示我WinMian批注不一致


    这一句
  1. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
复制代码

    改为
  1. int WINAPI WinMain(
  2.     _In_ HINSTANCE hInstance,
  3.     _In_opt_ HINSTANCE hPrevInstance,
  4.     _In_ LPSTR szCmdLine,
  5.     _In_ int iCmdShow)
复制代码

    这一句
  1.         TextOut(hdc, 400, 300, TEXT("客户区"), 3);
复制代码

    改为
  1.         TextOut(hdc, 400, 300, TEXT("客户区"), 6);
复制代码

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 07:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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