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

请教,下面的代码怎么运行后,不显示窗口?_(语言-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 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路
  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应