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

📄 ctrldemo.c

📁 HGui4.1.rar
💻 C
📖 第 1 页 / 共 2 页
字号:
	RETURNSCENE(200, 201);
}



DEFINESCENE(SID_CTRLDEMO2)
MSGMAPBEGIN
	ONCREAT(CtrlDemo2OnCreat)
	ONMSG(EVT_PAINT, CtrlDemo2OnPaint)
	ONKEYDN(CtrlDemo2OnKey)
	ONMSG(EVT_COMMAND, CtrlDemo2OnCommand)
	ONMSG(EVT_TIMER, CtrlDemo2OnTimer)
	ONMSG(EVT_EXIT, CtrlDemo2OnExit)
	ONDESTROY(CtrlDemo2OnDestroy)
MSGMAPEND

static const S_BYTE *PicPath[] =
{
	WINOS_RES_PATH"mm1.bmp",
	WINOS_RES_PATH"mm2.bmp",
	WINOS_RES_PATH"mm3.bmp",
	WINOS_RES_PATH"mm4.bmp",
	WINOS_RES_PATH"mm5.bmp"
};

typedef struct tagCtrlData
{
	S_BYTE step;
	S_BYTE PicID;
	S_SHORT bright;
	SH_BITMAP hBmp;
}
S_CTRLDAT, *SP_CTRLDAT;

static void  CtrlDemo2OnCreat(SP_EVT pEvent)
{
	SP_CTRLDAT pCtrlDat = hai_GetSceneData(sizeof(*pCtrlDat));

	pCtrlDat->bright = 0;
	pCtrlDat->PicID  = 0;
	pCtrlDat->step   = 0;
	pCtrlDat->hBmp = hai_LoadBitmap((S_BYTE*)PicPath[pCtrlDat->PicID]);
	hai_CreateEditBox(0,                   1, 44,  48, 150, 20, "ctrldemo2", 22);
	hai_CreateEditBox(BS_EDITBOX_UNDERLINE,2, 44,  78, 150, 20, "CTRLDEMO2", 22);
	hai_CreateEditBox(BS_EDITBOX_BORDER,   3, 44, 108, 150, 20, "好好学习",  22);
	hai_CreateEditBox(BS_EDITBOX_3DBOX,    4, 44, 138, 150, 20, "天天向上",  22);
	hai_CreateEvtArea(0, 5, 220, 50, 250, 210, 0);
	hai_CreateProgress(PBS_RULE|PBS_HPROGRESS, 6, 270,  12, 197, 20, 20, 0, 0, 19, S_NULL, S_NULL);
	hai_CreateProgress(PBS_SLOT|PBS_HPROGRESS, 7,  80, 174, 122, 12, 20, 0, 0, 19, S_NULL, S_NULL);
	hai_CreateProgress(CS_GRAYED|PBS_BLOCK|PBS_HPROGRESS, 8,  80, 194, 128, 24, 12, 0, 0, 11, S_NULL, S_NULL);
	hai_ShowAllCtrl();
	hai_SetProgressCurPos(hai_GetCurSceneCtrl(6), 10);
	hai_SetSceneIME(INPUTMETHOD_ENABLE);
}

static void  CtrlDemo2OnPaint(SP_EVT pEvent)
{
	S_BITMAP Bitmap;
	SH_DC hDC, hDCmem;
	S_PAINTSTRUCT Paint;
	SP_CTRLDAT pCtrlDat = hai_GetSceneData(sizeof(*pCtrlDat));

	hDC = hai_BeginPaint(&Paint);
	hai_BitBlt(hDC, 0, 0, LCD_WIDTH, LCD_HEIGHT, S_NULL, 0, 0, WHITENESS);
	hai_TextOut(hDC, 210, 16, "亮度调整:", 0);
	hai_MoveTo(hDC, 214, 40, S_NULL);
	hai_LineTo(hDC, 214, 40+216+12);
	hai_LineTo(hDC, 214+250+12, 40+216+12);
	hai_LineTo(hDC, 214+250+12, 40);
	hai_LineTo(hDC, 214, 40);

	hai_TextOut(hDC, 40,  30, "编辑框:", 0);
	hai_TextOut(hDC, 10,  52, "名称:", 0);
	hai_TextOut(hDC, 10,  82, "性别:", 0);
	hai_TextOut(hDC, 10, 112, "属性:", 0);
	hai_TextOut(hDC, 10, 142, "描述:", 0);
	hai_TextOut(hDC, 10, 172, "可控进度条:", 0);
	hai_TextOut(hDC, 10, 202, "静态进度条:", 0);

	hDCmem = hai_CreateCompatibleDC(hDC);
	hai_GetObject((SH_GDIOBJ)pCtrlDat->hBmp, sizeof(Bitmap), &Bitmap);
	hai_SelectObject(hDCmem, (SH_GDIOBJ)pCtrlDat->hBmp);
	hai_SetBrightVal(hDCmem, pCtrlDat->bright);
	hai_BitBlt(hDC, (S_SHORT)((220+((250-Bitmap.width)>>1))), (S_SHORT)(50+((216-Bitmap.height)>>1)), Bitmap.width, Bitmap.height, hDCmem, 0, 0, BRIGHTCOPY);
	hai_DeleteDC(hDCmem);

	hai_SetTextColor(hDC, (S_COLOR)COLOR_GRAY);
	hai_TextOut(hDC, 20,  10, "温馨提示:按F1可切换输入法!", 0);
	hai_TextOut(hDC, 40, 230, "温馨提示:点击图片可切换,", 0);
	hai_TextOut(hDC, 94, 250, "请试一下!", 0);
	hai_EndPaint(&Paint);
}

static void  CtrlDemo2OnKey(SP_EVT pEvent)
{
	SH_CTRL hFocus = hai_GetCurSceneFocusCtrl();
	S_BYTE CtrlID  = hai_GetCurSceneCtrlID(hFocus);

	switch (pEvent->wParam)
	{
	case VK_ESCAPE:
		hai_PostEvent(EVT_DESTROY, 0, 0);
		break;
	case VK_UP:
		if (CtrlID >= 1 && CtrlID <= 4)
		{
			if (CtrlID > 1)
				CtrlID--;
			else if (CtrlID == 1)
				CtrlID = 4;
			hFocus = hai_GetCurSceneCtrl(CtrlID);
			hai_SetFocusCtrl(hFocus);
		}
		break;
	case VK_DOWN:
		if (CtrlID >= 1 && CtrlID <= 4)
		{
			if (CtrlID < 4)
				CtrlID++;
			else if (CtrlID == 4)
				CtrlID = 1;
			hFocus = hai_GetCurSceneCtrl(CtrlID);
			hai_SetFocusCtrl(hFocus);
		}
		break;
	default:
		break;
	}

}

static void  CtrlDemo2OnCommand(SP_EVT pEvent)
{
	S_BYTE CtrlID  = HAI_GETLOBYTE(pEvent->wParam);
	S_BYTE Event   = HAI_GETHIBYTE(pEvent->wParam);
	S_SHORT bright = HAI_GETLOWORD(pEvent->lParam);
	SP_CTRLDAT pCtrlDat = hai_GetSceneData(sizeof(*pCtrlDat));

	switch (CtrlID)
	{
	case 5:
		if (Event == EVT_MOUSEUP)
		{
			if (pCtrlDat->PicID == 4)
				pCtrlDat->PicID = 0;
			else
				pCtrlDat->PicID++;
			if (pCtrlDat->hBmp)
				hai_DeleteObject((SH_GDIOBJ)pCtrlDat->hBmp);
			pCtrlDat->hBmp = hai_LoadBitmap((S_BYTE*)PicPath[pCtrlDat->PicID]);
			hai_InvalidRect(S_NULL);
		}
		break;
	case 6:
		if (bright < 10)
		{
			if (bright == 0) bright = 1;
			pCtrlDat->bright = -((10-bright)*28);
		}
		else if (bright == 10)
			pCtrlDat->bright = 0;
		else if (bright > 10)
			pCtrlDat->bright = (bright-10)*28;
		hai_InvalidRect(S_NULL);
		break;
	default:
		break;
	}
}

static void  CtrlDemo2OnExit(SP_EVT pEvent)
{
	SP_CTRLDAT pCtrlDat = hai_GetSceneData(sizeof(*pCtrlDat));

	if (pCtrlDat->hBmp)
		hai_DeleteObject((SH_GDIOBJ)(pCtrlDat->hBmp));
	hai_ReleaseSceneData();
}

static void  CtrlDemo2OnDestroy(SP_EVT pEvent)
{
	CtrlDemo2OnExit(pEvent);
	RETURNSCENE(100, 101);
}

static void  CtrlDemo2OnTimer(SP_EVT pEvent)
{
	S_BYTE pos;
	SP_CTRLDAT pCtrlDat = hai_GetSceneData(sizeof(*pCtrlDat));

	pCtrlDat->step++;

	if (!(pCtrlDat->step%5)) 
	{
		pos = pCtrlDat->step/5;
		if (pos > 11) 
		{
			pos = 0;
			pCtrlDat->step = 0;
		}
		hai_SetProgressCurPos(hai_GetCurSceneCtrl(8), (S_SHORT)pos);
	}
}

DEFINESCENE(SID_TEST)
MSGMAPBEGIN
	ONCREAT(TestOnCreat)
	ONMSG(EVT_PAINT, TestOnPaint)
	ONKEYDN(TestOnKey)
	ONMSG(EVT_COMMAND, TestOnCommand)
	ONMSG(EVT_TIMER, TestOnTimer)
	ONMSG(EVT_EXIT, TestOnExit)
	ONDESTROY(TestOnDestroy)
MSGMAPEND

static const S_BYTE *TestPic[] =
{
	WINOS_RES_PATH"WinosSim.ico",
	WINOS_RES_PATH"mfc.ico",
	WINOS_RES_PATH"iconpro.ico",
	WINOS_RES_PATH"mm4.bmp",
	WINOS_RES_PATH"mm5.bmp",
	WINOS_RES_PATH"rle4.bmp",
	WINOS_RES_PATH"rle8.bmp"
};

typedef struct tagTestData
{
	SH_ICON   hIco;
	SH_BITMAP hbbb;
	SH_BITMAP hBmp;
}
S_TESTDAT, *SP_TESTDAT;

static void  TestOnCreat(SP_EVT pEvent)
{
	SP_TESTDAT pDat = hai_GetSceneData(sizeof(*pDat));
	pDat->hBmp = hai_LoadBitmap((S_BYTE *)TestPic[6]);
	pDat->hIco = hai_LoadIcon((S_BYTE *)TestPic[1]);
}

static void  TestOnPaint(SP_EVT pEvent)
{
	S_BITMAP Bitmap;
	SH_DC hDC, hDCmem;
	S_PAINTSTRUCT Paint;
	SP_TESTDAT pDat = hai_GetSceneData(sizeof(*pDat));

	hDC = hai_BeginPaint(&Paint);
	hai_BitBlt(hDC, 0, 0, LCD_WIDTH, LCD_HEIGHT, S_NULL, 0, 0, WHITENESS);
	hDCmem = hai_CreateCompatibleDC(hDC);
	hai_GetObject((SH_GDIOBJ)pDat->hBmp, sizeof(Bitmap), &Bitmap);
	hai_SelectObject(hDCmem, (SH_GDIOBJ)pDat->hBmp);
	hai_BitBlt(hDC, 0, 0, Bitmap.width, Bitmap.height, hDCmem, 0, 0, SRCCOPY);
	hai_DeleteDC(hDCmem);
	
	hai_DrawIcon(hDC, 400, 100, pDat->hIco);
	hai_EndPaint(&Paint);
}

static void  TestOnKey(SP_EVT pEvent)
{
	switch (pEvent->wParam)
	{
	case VK_ESCAPE:
		hai_PostEvent(EVT_DESTROY, 0, 0);
		break;
	default:
		break;
	}
}

static void  TestOnCommand(SP_EVT pEvent)
{
}

static void  TestOnExit(SP_EVT pEvent)
{
	SP_TESTDAT pDat = hai_GetSceneData(sizeof(*pDat));

	if (pDat->hBmp)
		hai_DeleteObject((SH_GDIOBJ)(pDat->hBmp));
	if (pDat->hIco)
		hai_DeleteObject((SH_GDIOBJ)(pDat->hIco));
	hai_ReleaseSceneData();
}

static void  TestOnDestroy(SP_EVT pEvent)
{
	TestOnExit(pEvent);
	RETURNSCENE(100, 101);
}

static void  TestOnTimer(SP_EVT pEvent)
{
}

/*
	hai_MoveTo(hDC, 4, 4, S_NULL);
	hai_LineTo(hDC, 200, 4);
	hai_SetBkMode(hDC, BKM_TRANSPARENT);
	hPen = (SH_PEN)hai_SelectObject(hDC, (SH_GDIOBJ)hai_CreatePen(1, COLOR_BLACK, PS_DOT));
	hai_MoveTo(hDC, 4, 8, S_NULL);
	hai_LineTo(hDC, 200, 8);
	hPen = (SH_PEN)hai_SelectObject(hDC, (SH_GDIOBJ)hai_CreatePen(1, COLOR_BLACK, PS_DASHDOT));
	hai_DeleteObject((SH_GDIOBJ)hPen);
	hai_MoveTo(hDC, 4, 12, S_NULL);
	hai_LineTo(hDC, 200, 12);
	hPen = (SH_PEN)hai_SelectObject(hDC, (SH_GDIOBJ)hai_CreatePen(1, COLOR_BLACK, PS_DASH));
	hai_DeleteObject((SH_GDIOBJ)hPen);
	hai_MoveTo(hDC, 4, 20, S_NULL);
	hai_LineTo(hDC, 200, 20);
	hPen = (SH_PEN)hai_SelectObject(hDC, (SH_GDIOBJ)hai_CreatePen(1, COLOR_BLACK, PS_DASHDOTDOT));
	hai_DeleteObject((SH_GDIOBJ)hPen);
	hai_MoveTo(hDC, 4, 30, S_NULL);
	hai_LineTo(hDC, 200, 30);
	hPen = (SH_PEN)hai_SelectObject(hDC, (SH_GDIOBJ)hai_CreatePen(1, COLOR_BLACK, PS_DASHDASHDOT));
	hai_DeleteObject((SH_GDIOBJ)hPen);
	hai_MoveTo(hDC, 4, 40, S_NULL);
	hai_LineTo(hDC, 200, 40);
	hPen = (SH_PEN)hai_SelectObject(hDC, (SH_GDIOBJ)hai_CreatePen(1, COLOR_BLACK, PS_DOT));
	hai_DeleteObject((SH_GDIOBJ)hPen);
	hai_MoveTo(hDC, 4, 50, S_NULL);
	hai_LineTo(hDC, 200, 230);
	hai_MoveTo(hDC, 4, 60, S_NULL);
	hai_LineTo(hDC, 200, 60);
	hai_MoveTo(hDC, 4, 70, S_NULL);
	hai_LineTo(hDC, 200, 70);
	hai_MoveTo(hDC, 4, 80, S_NULL);
	hai_LineTo(hDC, 200, 80);
	hPen = (SH_PEN)hai_SelectObject(hDC, (SH_GDIOBJ)hai_GetStockObject(BLACK_PEN));
	hai_DeleteObject((SH_GDIOBJ)hPen);
	hai_SelectObject(hDC, hai_GetStockObject(WHITE_BRUSH));

	hai_Rectangle(hDC, 101, 101, 106, 200);
	c1 = hai_SetTextColor(hDC, COLOR_GRAY10);
	c2 = hai_SetBkColor(hDC, COLOR_GRAY00);
	hai_SetBkMode(hDC, BKM_TRANSPARENT);
	hai_TextOut(hDC, 20, 210, "英雄模范基本原理!英雄模范基本原理!英雄\n模范基本原理!英雄模范基本原理!", 0);
	hai_SetTextColor(hDC, c1);
	hai_SetBkColor(hDC, c2);
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -