MiniGUI 自定义控件(一)

#include <minigui/common.h>  
#include <minigui/minigui.h>  
#include <minigui/gdi.h>  
#include <minigui/window.h>  
#include <minigui/control.h>  
  
#define IDC_MYBUTTON    100  
#define IDC_MYBUTTON2    110  
  
int (*old_button_proc) (hWnd, message, wParam, lParam);     
static int MybuttonWindowProc (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_red);  
        }
break;
        case MSG_SETFOCUS:{  
               SetWindowBkColor(hWnd, COLOR_red); 
        }break;
         
case MSG_KILLFOCUS:
{  
                SetWindowBkColor(hWnd, COLOR_darkgray); 
          }break; 
    }  
     return(temp); 
}  
  
        
//注册自定义控件  
BOOL RegisterMybutton (void)  
{  
    WNDCLASS WndClass;  
WndClass.spClassName = CTRL_BUTTON;  
   
GetWindowClassInfo(&WndClass); 
     old_button_proc = WndClass.WinProc;  
    WndClass.spClassName = "mybutton";  
    WndClass.dwStyle     = 0;  
    WndClass.dwExStyle   = 0;  
    WndClass.hCursor     = GetSystemCursor(0);  
    WndClass.iBkColor    = PIXEL_lightgray;  
    WndClass.WinProc     = MybuttonWindowProc;  
  
    return RegisterWindowClass (&WndClass);  
}  
  
/* main windoww proc */  
static int CaptureWinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)  
{  
    switch (message) {  
    case MSG_CREATE:  
        RegisterMybutton();//使用前,注册自定义控件  
  
         //创建自定义按钮控件  
        CreateWindow ("mybutton", "", WS_VISIBLE | WS_CHILD, IDC_MYBUTTON,   
                10, 95, 200, 20, hWnd, 0);  
     break;  
    
  
    case MSG_CLOSE:  
        DestroyAllControls (hWnd);  
        DestroyMainWindow (hWnd);  
        PostQuitMessage (hWnd);  
        return 0;  
    }  
  
    return DefaultMainWinProc(hWnd, message, wParam, lParam);  
}  
  
int MiniGUIMain (int args, const char* arg[])  
{  
    MSG Msg;  
    HWND hMainWnd;  
    MAINWINCREATE CreateInfo;  
  
#ifdef _MGRM_PROCESSES  
    JoinLayer(NAME_DEF_LAYER , "capture" , 0 , 0);  
#endif  
      
    CreateInfo.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION;  
    CreateInfo.dwExStyle = WS_EX_NONE;  
    CreateInfo.spCaption = "using mouse capture demo";  
    CreateInfo.hMenu = 0;  
    CreateInfo.hCursor = GetSystemCursor(0);  
    CreateInfo.hIcon = 0;  
    CreateInfo.MainWindowProc = CaptureWinProc;  
    CreateInfo.lx = 0;  
    CreateInfo.ty = 0;  
    CreateInfo.rx = 320;  
    CreateInfo.by = 240;  
    CreateInfo.iBkColor = COLOR_lightwhite;  
    CreateInfo.dwAddData = 0;  
    CreateInfo.hHosting = HWND_DESKTOP;  
      
    hMainWnd = CreateMainWindow (&CreateInfo);  
      
    if (hMainWnd == HWND_INVALID)  
        return -1;  
  
    ShowWindow(hMainWnd, SW_SHOWNORMAL);  
  
    while (GetMessage(&Msg, hMainWnd)) {  
        TranslateMessage(&Msg);  
        DispatchMessage(&Msg);  
    }  
  
    MainWindowThreadCleanup (hMainWnd);  
  
    return 0;  
}  
  
#ifndef _LITE_VERSION  
#include <minigui/dti.c>  
#endif  #include <minigui/common.h>  
#include <minigui/minigui.h>  
#include <minigui/gdi.h>  
#include <minigui/window.h>  
#include <minigui/control.h>  
  
#define IDC_MYBUTTON    100  
#define IDC_MYBUTTON2    110  
  
int (*old_button_proc) (hWnd, message, wParam, lParam);     
static int MybuttonWindowProc (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_red);  
        }
break;
        case MSG_SETFOCUS:{  
               SetWindowBkColor(hWnd, COLOR_red); 
        }break;
         
case MSG_KILLFOCUS:
{  
                SetWindowBkColor(hWnd, COLOR_darkgray); 
          }break; 
    }  
     return(temp); 
}  
  
        
//注册自定义控件  
BOOL RegisterMybutton (void)  
{  
    WNDCLASS WndClass;  
WndClass.spClassName = CTRL_BUTTON;  
   
GetWindowClassInfo(&WndClass); 
     old_button_proc = WndClass.WinProc;  
    WndClass.spClassName = "mybutton";  
    WndClass.dwStyle     = 0;  
    WndClass.dwExStyle   = 0;  
    WndClass.hCursor     = GetSystemCursor(0);  
    WndClass.iBkColor    = PIXEL_lightgray;  
    WndClass.WinProc     = MybuttonWindowProc;  
  
    return RegisterWindowClass (&WndClass);  
}  
  
/* main windoww proc */  
static int CaptureWinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)  
{  
    switch (message) {  
    case MSG_CREATE:  
        RegisterMybutton();//使用前,注册自定义控件  
  
         //创建自定义按钮控件  
        CreateWindow ("mybutton", "", WS_VISIBLE | WS_CHILD, IDC_MYBUTTON,   
                10, 95, 200, 20, hWnd, 0);  
     break;  
    
  
    case MSG_CLOSE:  
        DestroyAllControls (hWnd);  
        DestroyMainWindow (hWnd);  
        PostQuitMessage (hWnd);  
        return 0;  
    }  
  
    return DefaultMainWinProc(hWnd, message, wParam, lParam);  
}  
  
int MiniGUIMain (int args, const char* arg[])  
{  
    MSG Msg;  
    HWND hMainWnd;  
    MAINWINCREATE CreateInfo;  
  
#ifdef _MGRM_PROCESSES  
    JoinLayer(NAME_DEF_LAYER , "capture" , 0 , 0);  
#endif  
      
    CreateInfo.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION;  
    CreateInfo.dwExStyle = WS_EX_NONE;  
    CreateInfo.spCaption = "using mouse capture demo";  
    CreateInfo.hMenu = 0;  
    CreateInfo.hCursor = GetSystemCursor(0);  
    CreateInfo.hIcon = 0;  
    CreateInfo.MainWindowProc = CaptureWinProc;  
    CreateInfo.lx = 0;  
    CreateInfo.ty = 0;  
    CreateInfo.rx = 320;  
    CreateInfo.by = 240;  
    CreateInfo.iBkColor = COLOR_lightwhite;  
    CreateInfo.dwAddData = 0;  
    CreateInfo.hHosting = HWND_DESKTOP;  
      
    hMainWnd = CreateMainWindow (&CreateInfo);  
      
    if (hMainWnd == HWND_INVALID)  
        return -1;  
  
    ShowWindow(hMainWnd, SW_SHOWNORMAL);  
  
    while (GetMessage(&Msg, hMainWnd)) {  
        TranslateMessage(&Msg);  
        DispatchMessage(&Msg);  
    }  
  
    MainWindowThreadCleanup (hMainWnd);  
  
    return 0;  
}  
  
#ifndef _LITE_VERSION  
#include <minigui/dti.c>  
#endif  

你可能感兴趣的:(MiniGUI 自定义控件(一))