wince(windows mobile) 中win32 实现带透明背景的贴图按钮

来源:互联网 发布:javascript sort() 编辑:程序博客网 时间:2024/05/18 02:26

      在wince中也看到别人实现过贴图按钮,但多数是在MFC中继承CButton类实现的,很少有在Win32中直接实现的,在前人基础上写了个ImageButton类可以完成该功能,纯Win32实现的。

      主要是实现描述如下:

      首先是创建按钮,位置上可以是RECT型参数也可也是,(x,y,iWidth,iHeight)形式的参数。因为是贴图按钮,所以需要加上BS_OWNERDRAW属性。

 

     然后是加载图片,可以通过绝对路径加载(windows mobile中没有相对路径的概念),也可以通过图片的资源ID加载。

 

     然后是通过父窗口响应WM_DRAWITEM 根据按钮状态画出按钮图片。分为透明和不透明2种情况

 

 

 

下面再说下ImageButton类的使用方法:

 

创建并加载图片

 

其中g_hInst是程序实例,hWnd是主窗口句柄,g_hBKMemDC可以是程序背景图加载的内存DC,类似如下:

  

 

 

在主窗口的WndProc中响应WM_DRAWITEM消息,根据wParam参数找到对应ID,然后调用

 

 

还需要在主窗口的WndProc中响应WM_CTLCOLORBTN消息,加上下面代码(改变按钮默认的背景画刷)

 

完整的代码如下:

 

说明下,按钮图片样式如下:

前面是正常显示状态,后面是按下后的状态。

 

版权所有,转载请注明出处。

原创粉丝点击