创建MiniGUI自定义控件

创建MiniGUI自定义控件

MiniGUI中,创建MiniGUI自定义控件,是通过替换已有的窗口过程实现的。这种方法是对某个控件类进行子类化,达到创建自定义控件的目的。下面用一个自定义按钮的例子,说明创建过程。这个例子中,用户绘制一个自己定义形状的按钮,而不是普通的3D按钮。

 

//旧的回调函数句柄

static WNDPROC old_proc;

//创建一个按键

HWND CreateButton(HWND hParentWnd,int id, DWORD dwAddData)

{

    HWND btWnd;

DWORD style=0;

//自定义按钮数据结构

    BUTTON_DATA* buttondata = (BUTTON_DATA*)dwAddData;

 

    style = WS_CHILD|BS_PUSHBUTTON|BS_MULTLINE;

    if(ISBTNVISIBLE(bdata->attr))

              style |= WS_VISIBLE;

    else

              return HWND_INVALID;

 

    btWnd = CreateWindow(CTRL_BUTTON, bdata->str, style, id, bdata->x,

                     bdata->y, bdata->w, bdata->h, hParentWnd, dwAddData);

       //这里重载了按钮的消息处理过程

    old_proc= SetWindowCallbackProc(btWnd, MyButtonProc);

    UpdateWindow(btWnd, TRUE);

    return btWnd;

}

 

//按钮消息处理函数

static int MyButtonProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)

{

    int state, id;

    BUTTON_DATA* bdata;

 

    id = GetDlgCtrlID(hWnd);

    switch(message)

    {

        case MSG_PAINT:

                     //这里使用了新绘制按钮的函数,用户可以绘制自己需要的形状的按钮

//绘制后直接返回,不再调用old_proc绘制按钮

            DrawButton(hWnd);

            return 0;

        break;

    }

    return (*old_proc)(hWnd,message,wParam,lParam);

}

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值