本文转载于:http://blog.zhuhi.com/?uid-48-action-viewspace-itemid-75
下面是一个button的超类化程序
作者邮箱:
bradyuan@126.com
2006-07-31
/*Minigui 相关头文件*/
#include <minigui/common.h>
#include <minigui/minigui.h>
#include <minigui/gdi.h>
#include <minigui/window.h>
#include <minigui/control.h>
//---- 自定义button ----
#define MY_CTRL_BUTTON "b_button" /*******************************************
*函数名: MyButtonControlProc()
* 输入:
* 输出:
* 功能描述: button的消息处理函数
* 作者:
* 日期:
********************************************/
static int MyButtonControlProc (HWND hWnd, int message, WPARAM wParam, LPARAM lParam) =
{
int temp;
temp = (*old_button_proc) (hWnd, message, wParam, lParam);
switch(message){
case MSG_CREATE:{
SetWindowBkColor(hWnd, COLOR_darkgray);
}break; {e$}g1sy:
case MSG_SETFOCUS:{
SetWindowBkColor(hWnd, COLOR_darkblue);
}break; TRgQgoh[S
case MSG_KILLFOCUS:{
SetWindowBkColor(hWnd, COLOR_darkgray);
}break; vX}
}
return(temp);
}
/*******************************************
* 函数名: RegisterMyButtonControl()
* 输入:
* 输出:
* 功能描述: 向系统注册控件
* 作者:
* 日期:
********************************************
BOOL RegisterMyButtonControl (void)
{ ]:d$+kxdL
WNDCLASS MyButtonClass;
MyButtonClass.spClassName = CTRL_BUTTON;
GetWindowClassInfo(&MyButtonClass);
old_button_proc = MyButtonClass.WinProc;
MyButtonClass.spClassName = MY_CTRL_BUTTON;
MyButtonClass.dwStyle. = WS_NONE;
MyButtonClass.dwExStyle. = WS_EX_NONE;
MyButtonClass.hCursor = GetSystemCursor (IDC_ARROW);
MyButtonClass.iBkColor = COLOR_lightwhite;
MyButtonClass.WinProc = MyButtonControlProc;
return RegisterWindowClass (&MyButtonClass);
}
/*******************************************
* 函数名: UnregisterMyButtonControl()
* 输入:
* 输出:
* 功能描述: 向系统取消注册控件
* 作者:
* 日期:
********************************************
void UnregisterMyButtonControl (void)
{
UnregisterWindowClass (MY_CTRL_BUTTON);
}
//应用程序调用RegisterMyButtonControl和UnregisterMyButtonControl )