⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gui_mybutton2.c

📁 在MiniGUI下开发的能够显示图片的按钮控件
💻 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 + -