美文网首页
2020-12-02--15--win32窗口控件的创建和响应-

2020-12-02--15--win32窗口控件的创建和响应-

作者: heiqimingren | 来源:发表于2020-12-05 14:11 被阅读0次

学习总结:
01,老师视频中的代码我复制了下来,有一个直观的认识,有一个直观的感受。
02,但是对于消息的传递,感觉还是有点晕忽忽的。

============================


image.png
image.png
image.png
image.png
image.png
image.png
image.png

运行结果图片:


image.png

源代码:

#include <tchar.h>
#include <windows.h>
#include <CommCtrl.h>

static TCHAR szWindowClass[] = _T("WindowCLass");
static TCHAR szTitle[] = _T("我在VC驿站的第一个窗口程序");


//第五步,窗口函数中处理窗口消息
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    PAINTSTRUCT ps;
    HDC hdc;
    TCHAR greeting[] = _T("VC驿站的各位网友们,大家好哦!");

    UINT IDC_BUTTON_1 = 200; //控件id,定义了一个
    UINT IDC_BUTTON_2 = 201; //控件id,定义了一个
    switch (message)
    {
        //这是我新增的东西,第二个时间创建控件
    case WM_CREATE:    //当主窗口创建完事之后,在执行这里,这里执行完毕之后,才往下走。21:53s视频中有效关系解释。
    {

                           HWND hButtonWnd1 = CreateWindow(WC_BUTTON, _T("我是按钮1"), WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 100, 100, 100, 100, hWnd, (HMENU)IDC_BUTTON_1, NULL, NULL);
                           HWND hButtonWnd2 = CreateWindow(WC_BUTTON, _T("我是按钮2"), WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 200, 200, 100, 100, hWnd, (HMENU)IDC_BUTTON_2, NULL, NULL);

    }
        break;
    case WM_COMMAND: //按钮消息
    {
                         UINT nCtrID = LOWORD(wParam);   //控件id知道了
                         UINT nCode = HIWORD(wParam); //BN_CLICKED

                         if (nCode == BN_CLICKED)
                         {
                             if (nCtrID == IDC_BUTTON_1)
                             {
                                 MessageBox(hWnd, _T("按钮1被点击了!"), _T("tip"), MB_OK);
                             }
                             else if (nCtrID == IDC_BUTTON_2)
                             {
                                 MessageBox(hWnd, _T("按钮2被点击了!"), _T("tip"), MB_OK);
                             }

                         }
    }


    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        // TODO:  在此添加任意绘图代码...
        TextOut(hdc, 5, 5, greeting, _tcslen(greeting));
        EndPaint(hWnd, &ps);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
        break;
    }
    return 0;
}







int WINAPI _tWinMain(_In_ HINSTANCE hInstance,
    _In_opt_ HINSTANCE hPrevInstance,
    _In_ LPTSTR    lpCmdLine,
    _In_ int       nCmdShow)
{
    //第一步,注册窗口类,指定窗口类的名称与窗口回调函数
    WNDCLASSEX wcex = { 0 };
    wcex.cbSize = sizeof(WNDCLASSEX);
    wcex.lpfnWndProc = WndProc;
    wcex.lpszClassName = szWindowClass;

    if (!RegisterClassEx(&wcex))
    {
        MessageBox(NULL, _T("注册窗口类失败"), _T("tip"), NULL);
        return 1;
    }

    //第二步,创建窗口,指定注册窗口类,窗口标题和窗口的大小
    HWND hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 500, 300, NULL, NULL, hInstance, NULL);

    //---------时机1,这里创建子窗口或者控件

    if (!hWnd)
    {
        MessageBox(NULL, _T("创建窗口失败"), _T("tip"), NULL);
        return 1;
    }




    //第三步,显示窗口
    ShowWindow(hWnd, nCmdShow);

    //第四步,开始消息循环
    MSG msg = { 0 };
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return (int)msg.wParam;

}

相关文章

  • 2020-12-02--15--win32窗口控件的创建和响应-

    学习总结:01,老师视频中的代码我复制了下来,有一个直观的认识,有一个直观的感受。02,但是对于消息的传递,感觉还...

  • 控件既能被点击也能拖动窗口

    WPF窗口下,有时候 既需要点击某些控件响应对应的事件, 也需要点击移动在某个控件上移动整个窗口 效果图 源码 源...

  • Form元素使用笔记

    FormElement target 用于发送和接收响应的窗口名称 length 用于表示表单控件的数量 Form...

  • 2019-02-04 3 pyQT5建立窗口控件

    3 建立窗口控件 建立窗口的控件,需要注意以下几点: 1)控件本身也是窗口,它的父窗口是主窗口,这里定义父窗口的原...

  • Android中的视图焦点Focus的详细介绍

    在非触摸屏设备中接收事件和处理响应的控件是具有焦点(Focused)的控件。一个窗口中一个时间内只能有一个具有焦点...

  • 响应者链

    1.1 响应者链 当与某控件交互时,该控件将作为"第一响应者 (First Responder)",作为响应者链的...

  • electron学习---BrowserWindow对象

    创建和控制浏览器窗口。 无边框窗口 优雅地显示窗口 父子窗口 模态窗口 模态窗口是禁用父窗口的子窗口,创建模态窗口...

  • 重载resizeEvent

    简单实现 目标:改变窗口大小时,窗口中的控件布局将相应改变。如:窗口中包含两个QPushButton控件,宽度小于...

  • UIButton 扩大按钮的响应区域(runtime)

    前言 APP产品中不乏一些图标很小的,但需要响应的按键或者控件。如果这些需要响应的控件实际响应范围跟其响应的实际大...

  • iOS事件响应链条

    一、响应者链 首先判断主窗口(keyWindow)自己是否能接受触摸事件 判断触摸点是否在自己身上 子控件数组中从...

网友评论

      本文标题:2020-12-02--15--win32窗口控件的创建和响应-

      本文链接:https://www.haomeiwen.com/subject/bacpwktx.html