📄 gui_mybutton2.c
字号:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <minigui/common.h>
#include <minigui/minigui.h>
#include <minigui/gdi.h>
#include <minigui/window.h>
//#include <minigui/mywindows.h>
#include <minigui/control.h>
#include "gui_pub.h"
#include "gui_main.h"
#include "gui_mybutton2.h"
extern Add_data_s add_data[2];
BOOL RegisterMyButton2Control (void)
{
WNDCLASS MyButtonClass;
MyButtonClass.spClassName = CTRL_BUTTON;
GetWindowClassInfo(&MyButtonClass);
MyButtonClass.spClassName = MY_CTRL_BUTTON2;
MyButtonClass.dwStyle = WS_NONE;
MyButtonClass.dwExStyle = WS_EX_NONE;
MyButtonClass.hCursor = GetSystemCursor (IDC_ARROW);
MyButtonClass.iBkColor = COLOR_lightwhite;
MyButtonClass.WinProc = MyButton2ControlProc;
return RegisterWindowClass (&MyButtonClass);
}
void UnregisterMyButton2Control (void)
{
UnregisterWindowClass (MY_CTRL_BUTTON2);
}
static int MyButton2ControlProc (HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
{
/*自定义内容待添加*/
HDC hdc,hPaintdc;
RECT rect;
int temp,x,y,namelen;
temp = GetWindowAdditionalData(hWnd);
namelen = strlen(add_data[temp].name);
switch(message)
{
case MSG_CREATE:
break;
case MSG_LBUTTONDOWN:
SetCapture(hWnd);
hdc = GetClientDC(hWnd);
if(0 == namelen)
{
FillBoxWithBitmap( hdc, MBTN2BITMAP_0_X+1, MBTN2BITMAP_0_X+1, MBTN2BITMAP_0_LENGTH, MBTN2BITMAP_0_HEIGHT, &(add_data[temp+1].bitmap) );
ReleaseDC(hdc);
break;
}
//SetBkColor( hdc, RGB2Pixel(HDC_SCREEN,MBTN2RGB_R,MBTN2RGB_G,MBTN2RGB_B) );
SetTextColor (hdc, PIXEL_blue);
if(8 == namelen)
TextOut(hdc,MBTN2TEXTOUT_8_X,MBTN2TEXTOUT_8_Y,add_data[temp].name);
else if (6 == namelen)
TextOut(hdc,MBTN2TEXTOUT_6_X,MBTN2TEXTOUT_6_Y,add_data[temp].name);
else
TextOut(hdc,MBTN2TEXTOUT_10_X,MBTN2TEXTOUT_10_Y,add_data[temp].name);
ReleaseDC(hdc);
break;
case MSG_LBUTTONUP:
ReleaseCapture();
hdc = GetClientDC(hWnd);
if(0 == namelen)
{
FillBoxWithBitmap( hdc, MBTN2BITMAP_0_X, MBTN2BITMAP_0_X, MBTN2BITMAP_0_LENGTH, MBTN2BITMAP_0_HEIGHT, &(add_data[temp].bitmap) );
ReleaseDC(hdc);
PostMessage(GetParent(hWnd), MSG_COMMAND, GetDlgCtrlID(hWnd),0);
break;
}
SetBkColor( hdc, COLOR_lightwhite );
if(8 == namelen)
TextOut(hdc,MBTN2TEXTOUT_8_X,MBTN2TEXTOUT_8_Y,add_data[temp].name);
else if (6 == namelen)
TextOut(hdc,MBTN2TEXTOUT_6_X,MBTN2TEXTOUT_6_Y,add_data[temp].name);
else
TextOut(hdc,MBTN2TEXTOUT_10_X,MBTN2TEXTOUT_10_Y,add_data[temp].name);
ReleaseDC(hdc);
GetClientRect(hWnd,&rect);
x = LOWORD(lParam);
y = HIWORD(lParam);
ScreenToClient(hWnd,&x,&y);
if(PtInRect(&rect,x,y))
PostMessage(GetParent(hWnd), MSG_COMMAND, GetDlgCtrlID(hWnd),0);
break;
case MSG_PAINT:
hPaintdc = BeginPaint(hWnd);
if(0 == namelen)
{
FillBoxWithBitmap( hPaintdc, MBTN2BITMAP_0_X, MBTN2BITMAP_0_X, MBTN2BITMAP_0_LENGTH, MBTN2BITMAP_0_HEIGHT, &(add_data[temp].bitmap) );
EndPaint(hWnd, hPaintdc);
break;
}
FillBoxWithBitmap( hPaintdc, MBTN2BITMAP_ELSE_X+(namelen-8/2+2),MBTN2BITMAP_ELSE_Y,MBTN2BITMAP_ELSE_LENGTH,MBTN2BITMAP_ELSE_HEIGHT, &(add_data[temp].bitmap) );
SetBkColor( hPaintdc,COLOR_lightwhite );
if(8 == namelen)
TextOut(hPaintdc,MBTN2TEXTOUT_8_X,MBTN2TEXTOUT_8_Y,add_data[temp].name);
else if (6 == namelen)
TextOut(hPaintdc,MBTN2TEXTOUT_6_X,MBTN2TEXTOUT_6_Y,add_data[temp].name);
else
TextOut(hPaintdc,MBTN2TEXTOUT_10_X,MBTN2TEXTOUT_10_Y,add_data[temp].name);
EndPaint(hWnd, hPaintdc);
return 0;
}
return DefaultControlProc (hWnd, message, wParam, lParam);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -