|

楼主 |
发表于 2018-6-29 20:45:20
|
显示全部楼层
本帖最后由 1314一路向前 于 2018-6-29 20:47 编辑
好了,我明白了这个问题啦。在对话框回调函数中的WM_PAINT中只需用户重绘自定义的东西,控件的重绘不用管。
现在又遇到一个新问题,我想将一个带透明度的位图加载到一个不带透明度的背景图上。分别申请了带透明效果的内存设备和不带透明的内存设备。但是带透明的内存设备的透明区域叠加在不带透明的设备上后,发现是黑色的。也就是说透明区域一直都是黑色的,没法实现叠加效果。和V6的万年历历程比较了一番,发现区别在于我使用的是带透明度的图,而万年历使用的是画多边形的方式,所以它没有透明区域需要叠加。麻烦指点一下思路,谢谢
- static void _cbDialog(WM_MESSAGE * pMsg) {
- WM_HWIN hItem;
- int NCode;
- int Id;
- // USER START (Optionally insert additional variables)
- int ID;
- // USER END
- switch (pMsg->MsgId) {
- case WM_INIT_DIALOG:
- //
- // Initialization of 'App_S'
- //
- hItem = pMsg->hWin;
- WINDOW_SetBkColor(hItem, GUI_WHITE);
- //
- // Initialization of 'Button'
- //
- hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0);
- BUTTON_SetText(hItem, "EXIT");
- //
- // Initialization of 'Button'
- //
- hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_1);
- BUTTON_SetFont(hItem, GUI_FONT_13_1);
- BUTTON_SetText(hItem, "Menu");
- // USER START (Optionally insert additional code for further widget initialization)
-
- hMem_PICBK = GUI_MEMDEV_CreateFixed(0,
- 0,
- bmLock.XSize*2,
- bmLock.XSize*2,
- GUI_MEMDEV_NOTRANS,
- GUI_MEMDEV_APILIST_16,
- GUICC_M565);
- hMem_PIC = GUI_MEMDEV_CreateFixed(0,
- 0,
- bmLock.XSize,
- bmLock.YSize,
- GUI_MEMDEV_HASTRANS,
- GUI_MEMDEV_APILIST_32,
- GUICC_M8888);
- GUI_MEMDEV_Select(hMem_PIC);
- GUI_DrawBitmap(&bmLock, 0, 0);
- GUI_MEMDEV_Select(0);
-
- GUI_MEMDEV_Select(hMem_PICBK);
- GUI_SetBkColor(GUI_GREEN);
- GUI_Clear();
- GUI_MEMDEV_Write(hMem_PIC);
- GUI_MEMDEV_Select(0);
-
- // USER END
- break;
- case WM_NOTIFY_PARENT:
- Id = WM_GetId(pMsg->hWinSrc);
- NCode = pMsg->Data.v;
- switch(Id) {
- case ID_BUTTON_0: // Notifications sent by 'Button'
- switch(NCode) {
- case WM_NOTIFICATION_CLICKED:
- // USER START (Optionally insert code for reacting on notification message)
- // USER END
- break;
- case WM_NOTIFICATION_RELEASED:
- // USER START (Optionally insert code for reacting on notification message)
- GUI_EndDialog(pMsg->hWin,0);
- // USER END
- break;
- // USER START (Optionally insert additional code for further notification handling)
- // USER END
- }
- break;
- case ID_BUTTON_1: // Notifications sent by 'Button'
- switch(NCode) {
- case WM_NOTIFICATION_CLICKED:
- // USER START (Optionally insert code for reacting on notification message)
- // USER END
- break;
- case WM_NOTIFICATION_RELEASED:
- // USER START (Optionally insert code for reacting on notification message)
- // USER END
- break;
- // USER START (Optionally insert additional code for further notification handling)
- // USER END
- }
- break;
- // USER START (Optionally insert additional code for further Ids)
- // USER END
- }
- break;
- // USER START (Optionally insert additional message handling)
- case WM_PAINT:
- GUI_MEMDEV_WriteAt(hMem_PICBK,100,100);
- break;
- // USER END
- default:
- WM_DefaultProc(pMsg);
- break;
- }
- }
复制代码 |
|