CSDN-Ada助手 2024-02-19 12:18 采纳率: 1.6%
浏览 40

请教,下面的代码怎么运行后,不显示窗口?_(语言-c语言|操作系统-windows)

该问题来自社区帖: https://bbs.csdn.net/topics/618092933.为符合问答规范, 该问题经过ChatGPT优化
<html></html>

请问以下的代码,编译、调试都通过后,为什么执行时,看不到窗口?

代码如下:

        #include "stdafx.h"
        #include <windows.h>
        #include "mmsystem.h"

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

        int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, PSTR szCmdLine, int iCmdShow)
        {
            static TCHAR szAppName[] = TEXT("我的窗口");
            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;
            hwnd = CreateWindow(szAppName, TEXT("我的窗口"), 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("Welcom98.wav"), NULL, SND_FILENAME | SND_ASYNC);
                return 0;
            case WM_PAINT:
                hdc = BeginPaint(hwnd, &ps);
                GetClientRect(hwnd, &rect);
                DrawText(hdc, TEXT("hello, windows98"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
                EndPaint(hwnd, &ps);
                return 0;
            case WM_DESTROY:
                PostQuitMessage(0);
                return 0;
            }
            return DefWindowProc(hwnd, message, wParam, lParam);
        }
    
  • 写回答

2条回答 默认 最新

  • 哎呀呀不会啊 2024-02-19 14:27
    关注
    1. 比如CW_USEDEFAULT替换为具体的像素值,例如500和300,以查看是否窗口被创建在可见的位置。
    2. 使用了ShowWindow和UpdateWindow来显示和更新窗口,但是如果你在创建窗口后立即返回或者执行了其他操作,可能会导致窗口没有立即显示。你可以尝试在创建窗口后添加一些延迟,比如使用Sleep函数,看看是否能够看到窗口。
    评论

报告相同问题?

问题事件

  • 创建了问题 2月19日

悬赏问题

  • ¥15 cplex运行后参数报错是为什么
  • ¥15 之前不小心删了pycharm的文件,后面重新安装之后软件打不开了
  • ¥15 vue3获取动态宽度,刷新后动态宽度值为0
  • ¥15 升腾威讯云桌面V2.0.0摄像头问题
  • ¥15 关于Python的会计设计
  • ¥15 聚类分析 设计k-均值算法分类器,对一组二维模式向量进行分类。
  • ¥15 stm32c8t6工程,使用hal库
  • ¥15 找能接spark如图片的,可议价
  • ¥15 关于#单片机#的问题,请各位专家解答!
  • ¥15 博通raid 的写入速度很高也很低