📄 ctrldemo.c
字号:
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 + -