如何使用结构概念创建窗口以减少代码段?

时间:2009-12-30 05:23:17

标签: winapi windows-ce

假设我有5个窗口要创建,其中一个是父窗口,四个窗口是子窗口。所以在父窗口上,如果我必须创建四个窗口,那么我应该如何实现结构概念以减少代码段。?

这是一个好习惯还是不使用结构概念?

请多多回复。

1 个答案:

答案 0 :(得分:0)

假设你有一个结构

struct HANDLES
{
    HINSTANCE hInstance;
        HWND parent;
        HWND childwindow1;
        HWND childwindow2;
        HWND childwindow3;
        HWND childwindow4;
    };

Now declare object for this handle

    HANDLES handles;

现在在 bool WINAPI InitInstance(HINSTANCE hInstance,int nCmdShow)

中创建这样的父窗口
handles.parent = CreateWindowEx(0,
                className,
                windowName, 
                WS_VISIBLE | WS_POPUP,
                0, 0, 
                coordinates.width, coordinates.height,
                NULL, 
                NULL, 
                hInstance, 
                NULL);

其中坐标是对象和宽度& height是COORDINATES的数据成员。

现在在WM_CREATE下创建子窗口。

    HWND *buttons = &(handles.childwindow1);
        for(int i = MIN_BUTTON; i <= MAX_BUTTON; i++)  // MIN_BUTTON = 0 & MAX_BUTTON = 3
        {

            *buttons = CreateWindowEx(WS_EX_TOPMOST,
                                       TEXT("button"), 
                                       L"",
                                       WS_CHILD | WS_VISIBLE | BS_OWNERDRAW,
                                       btns[i].x, btns[i].y,
                                       btns[i].width,btns[i].height,
                                       handles.parent,     
                                       (HMENU) ((short)(INITIAL_BUTTON + i)), //(INITIAL_BUTTON + i) is id for your child window
                                       handles.hInstance, NULL) ;
             buttons++;
        }

其中“btns [4]”是结构“AXIS”的对象

AXIS btns[4];

struct AXIS
{
    short int x;
    short int y;
    short int width;
    short int height;
    short int widthSrc;
    short int heightSrc;
};

并且对于每个子窗口,都有一个不同的值,从btns [0]到btns [3]指定。

因此,通过这种方式,您可以使用结构创建窗口。

是的,这是一个使用结构的好习惯,它可以减少代码段并且易于实现。