前言:
实现弹窗,方法至少有两种,是我个人学习安富莱emwin 2000页教程后总结,
1.窗体形式:WM_CreateWindow(50,
50,
100,
100,
WM_CF_SHOW | WM_CF_HASTRANS,
_cbDialogLogWindows,
0);
2.对话框形式: GUI_CreateDialogBox(_aDialogCreateSetMode,
GUI_COUNTOF(_aDialogCreateSetMode),
_cbDialogSetModeWindows,
WM_HBKWIN,
0,
0);
如何实现透明:
1..窗体形式在WM_PAINT:中加入
//开启透明
GUI_SetUserAlpha(&AlphaState, 0xC0);
GUI_SetColor(GUI_TITLE_BK);
WM_GetClientRect(&pRect);
GUI_FillRoundedRect(pRect.x0, pRect.y0, pRect.x1, pRect.y1, 4);
//回复透明设置
GUI_RestoreUserAlpha(&AlphaState);
2.对话框形式:同上方法,不行,因为对话框本身有一个底,不知道怎么办了,
弹窗上的触摸按钮
1.窗体形式:不会再窗体上面放置按钮
//这样做不显示,只有一个透明弹窗
hItem = WM_GetDialogItem(pMsg->hWin, 100);
BUTTON_SetBitmap(hItem,BUTTON_BI_UNPRESSED,&bmmode_zhileng);
BUTTON_SetBitmap(hItem,BUTTON_BI_PRESSED,&bmmode_zhileng);
BUTTON_SetText(hItem, "LED2");
2..对话框形式:
//可以用这种方式添加按钮,但是没法透明
static const GUI_WIDGET_CREATE_INFO _aDialogCreateSetMode[] =
{
{ WINDOW_CreateIndirect, "", 0, 70, 80, 150, 100, 0},/
{ BUTTON_CreateIndirect, "", GUI_ID_BUTTON0, GUI_MODE_ZHILENG_INDEX_X, GUI_MODE_ZHILENG_INDEX_Y, 40, 40, 0, 0x0, 0 },
{ BUTTON_CreateIndirect, "", GUI_ID_BUTTON1, GUI_MODE_ZHIRE_INDEX_X, GUI_MODE_ZHIRE_INDEX_Y, 40, 40, 0, 0x0, 0 },
{ BUTTON_CreateIndirect, "", GUI_ID_BUTTON2, GUI_MODE_TONGFENG_INDEX_X, GUI_MODE_TONGFENG_INDEX_Y, 40, 40, 0, 0x0, 0 },
{ BUTTON_CreateIndirect, "", GUI_ID_BUTTON3, GUI_MODE_CHUSHI_INDEX_X, GUI_MODE_CHUSHI_INDEX_Y, 40, 40, 0, 0x0, 0 },
{ BUTTON_CreateIndirect, "", GUI_ID_BUTTON4, GUI_MODE_SHUIMIAN_INDEX_X, GUI_MODE_SHUIMIAN_INDEX_Y, 40, 40, 0, 0x0, 0 },
};
问题:
1.窗体形式可以透明,但是不会在窗体上添加按钮
2.对话框上面会添加按钮,但是不会透明
如果想要实现透明弹窗,请问如何抉择和操作
感谢硬汉哥百忙之中给予无私的回复
|