Win32 自绘Button的实现方法

Win32自绘Button的实现方法

     由于不会MFC来绘制按键,只能通过Win32来绘制按键。那么如何实现自定义按键了,首先你需要做的事情:

1.     根据按键的大小设计好图形大小,和图形的填充色(填充色是为了实现同明效果而必需的)

2.     创建按键的时候,需要定义BS_OWNERDRAW格式,也就是自己实现绘图。

那么步骤如下:

1.   调用CreateWindow创建按键。

2.   调用SetWindowLong(hBtn, GWL_WNDPROC, (long)BtnProc)将按键消息转给BtnProc来处理:

LRESULTWINAPI CloseBtnProc(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam)

{

 

    switch(wMsg)

    {

    caseWM_LBUTTONDOWN:

//画按键背景

                     break;

 

    caseWM_LBUTTONUP:

//画按键背景

                       break;

    }

 

//这条函数必须调用,返回消息到主窗口,不然主窗口消息得不到处理

    returnDefWindowProc(hWnd, wMsg, wParam, lParam);

}

3.   在主窗口WM_PAINT消息中,绘制按键背景,主要是为了初始化按键背景。

整个流程就和上面一样,但是还有一些细节问题:

1.   如何实现透明背景?这个可以调用TransparentBlt函数来完成!

2.   怎么解决屏幕闪烁的问题?我是用双缓冲来实现的,具体可以在网上搜索一下相关资料。

总结了一下,其实按键就是一个窗口,绘图的过程和普通的窗口没什么区别。


版权声明:本文为luocan1986原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。