第七章 7-4 使用子窗口

来源:互联网 发布:淘宝的主要目标客户 编辑:程序博客网 时间:2024/05/16 18:34

这里写图片描述

//1.在前面声明窗口名称和注册窗口TCHAR szChildClass[] = TEXT("Checker_Child");ATOM                MyRegisterChildClass(HINSTANCE hInstance);//2.在初始化全局字符串中添加注册子窗口MyRegisterChildClass(hInstance);//3.对子窗口类函数进行详细注册ATOM MyRegisterChildClass(HINSTANCE hInstance){    WNDCLASSEXW wcex;    wcex.cbSize = sizeof(WNDCLASSEX);    wcex.style = CS_HREDRAW | CS_VREDRAW;    wcex.lpfnWndProc = ChildWndProc;//注册子窗口过程    wcex.cbClsExtra = 0;    wcex.cbWndExtra = sizeof(long);    wcex.hInstance = hInstance;    wcex.hIcon = NULL;//LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WIN32PROJECT3));    wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);    wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);    wcex.lpszMenuName = NULL;//MAKEINTRESOURCEW(IDC_WIN32PROJECT3);    wcex.lpszClassName = szChildClass;    wcex.hIconSm = NULL;//LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));    return RegisterClassExW(&wcex);}//4.对子窗口进行生成HWND hwndChild;hwndChild  = CreateWindow(szChildClass, NULL, WS_CHILDWINDOW|WS_VISIBLE,                    0, 0, 0, 0, hWnd,(HMENU)(y<<8|x), hInst, NULL);//5.添加子窗口过程LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){    RECT rect;    switch (message)    {    case WM_CREATE:        SetWindowLong(hWnd, 0, 0);  //和窗口类的cbwndExtra中的数值有关        break;    case WM_LBUTTONDOWN:        SetWindowLong(hWnd, 0, 1^GetWindowLong(hWnd, 0));        InvalidateRect(hWnd, NULL, FALSE);        break;    case WM_PAINT:    {        PAINTSTRUCT ps;        HDC hdc = BeginPaint(hWnd, &ps);        // TODO: 在此处添加使用 hdc 的任何绘图代码...        GetClientRect(hWnd, &rect);        Rectangle(hdc, 0, 0, rect.right, rect.bottom);        if (GetWindowLong(hWnd, 0))        {            MoveToEx(hdc, 0, 0, NULL);            LineTo(hdc, rect.right, rect.bottom);            MoveToEx(hdc, 0, rect.bottom, NULL);            LineTo(hdc, rect.right, 0);        }        EndPaint(hWnd, &ps);    }    break;    case WM_DESTROY:        PostQuitMessage(0);        break;    default:        return DefWindowProc(hWnd, message, wParam, lParam);    }    return 0;}
1 0
原创粉丝点击