m0_63133201 2022-09-30 03:04 采纳率: 87%
浏览 15
已结题

没有显示窗口,只有文字

没有显示窗口,只有文字


#include <windows.h>        

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

int WINAPI WinMain(
    HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    PSTR szCmdLine,
    int iCmdShow)
{
    typedef struct tagPAINTSTRUCT {
        HDC hdc;                      // 设备环境句柄
        BOOL fErase;               // 是否要擦除背景
        RECT rcPaint;              //无效矩形
        BOOL fRestore;         // 系统保留
        BOOL fIncUpdate;        //系统保留BYTE     rgbReserved[32];             //系统保留
        BOOL Ellipse(HDC hdc, int x1, int y1, int x2, int y2);

    } PAINTSTRUCT, * PPAINTSTRUCT;


    static TCHAR szAppName[] = TEXT("HelloWin");
    HWND   hwnd;
    MSG    msg;
    WNDCLASS wndclass;

    wndclass.style = 0;
    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 = TEXT("MYDemo");

    if (!RegisterClass(&wndclass))//(注册窗口类的API是RegisterClass)
    {
        MessageBox(NULL, TEXT("RegisterClass fail!"), szAppName, MB_ICONERROR);
        return 0;
    }
    //窗口起始位置(100,100),大小300*400   
    hwnd = CreateWindow(
        TEXT("MYDemo"),    // window class name
        szAppName,        // window caption
        WS_OVERLAPPEDWINDOW,    // window style
        100,            // initial x position
        100,            // initial y position
        300,            // initial x size
        400,            // initial y size
        NULL,                // parent window handle
        NULL,                // window menu handle
        NULL,        // program instance handle
        NULL);            // creation parameters


    if (!hwnd)
    {
        MessageBox(NULL, TEXT("CreateWindow fail!!"), szAppName, MB_ICONERROR);
        return 0;
    }


    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;

    TCHAR str_1[100] = TEXT("红色字体颜色,绿色背景的文本");
    TCHAR str_2[100] = TEXT("被遮盖的文本,背景透明");
    TCHAR str_3[100] = TEXT("显示在前面的文本,背景透明");
    int len_1 = wcslen(str_1);
    int len_2 = wcslen(str_2);
    int len_3 = wcslen(str_3);
    
    switch (message)
    {
    case WM_PAINT:
        hdc = BeginPaint(hwnd, &ps);

        SetTextColor(hdc, RGB(255, 0, 0));
        SetBkColor(hdc, RGB(0, 255, 0));

        TextOut(hdc, 20, 20, str_1, len_1); SetBkMode(hdc, TRANSPARENT);
        TextOut(hdc, 20, 60, str_2, len_2);

        TextOut(hdc, 20, 66, str_3, len_3);
        EndPaint(hwnd, &ps);
        return 0;



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

    }
                      
    return DefWindowProc(hwnd, message, wParam, lParam);
    }
}

img

  • 写回答

1条回答 默认 最新

  • 浪客 2022-09-30 07:34
    关注

    return DefWindowProc(hwnd, message, wParam, lParam); 放到switch (message)外面。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 10月15日
  • 已采纳回答 10月7日
  • 创建了问题 9月30日

悬赏问题

  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥15 vba使用jmail发送邮件正文里面怎么加图片
  • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。