ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
24 апреля
680668 Топик полностью
Antimouse (14.06.2016 11:38, просмотров: 102) ответил Constantin24 на Обращал внимание на данный вариант, несовсем понял что куда пишется. Не будет ли у вас примера использования?
Вообще полностью и специально я такой вариант не пробовал, но "кусочно" пришлось поковыряться с Callback функцией для фонового окна (для стандартного элемента типа кнопки она по сути та же). Выглядит примерно так: // объявляем свою Callback функцию: static void _cbBk(WM_MESSAGE * pMsg) { uint32_t NCode, Id; WM_KEY_INFO *KeyPtr; switch (pMsg->MsgId) { case WM_PAINT: GUI_ClearRect(0, 0, 239, 319); GUI_SetBkColor(GUI_TRANSPARENT); GUI_SetTextMode(GUI_TM_NORMAL); // рисуем линии GUI_SetColor(GUI_MY_GREY); GUI_DrawLine(0,16,239,16); GUI_DrawLine(119,17,119,319); GUI_DrawLine(0,171,239,171); // рисуем всё, что нам угодно любыми доступными способами // копируем битовое изображение на это всё WM_SetFocus(pMsg->hWin); break; // обратите внимание - никакого последующего вывоза WM_DefaultProc(pMsg); далее не произойдет !!! case WM_TOUCH: ScreenSaverOff(); break; case WM_SET_FOCUS: if( pMsg->Data.v==1 ) pMsg->Data.v = 0; break; case WM_KEY: { KeyPtr = (WM_KEY_INFO*)(pMsg->Data.p); if(KeyPtr->Key==GUI_KEY_CONTROL && KeyPtr->PressedCnt==1 ) CreateFramewinMainMenu(pMsg->hWin); break; } case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch (NCode) { case WM_NOTIFICATION_CLICKED: if (Id == '0') { // здесь так понимаю обработчик сообщений от принадлежащих окну других (дочерних) окон . . . . } break; default: break; } break; default: WM_DefaultProc(pMsg); // для кнопки это будет вызов BUTTON_Callback(pMsg); (прототип в Button.h) } } // в главном потоке вызываем: hDeskWin = WM_GetDesktopWindow(); WM_SetCallback( hDeskWin, _cbBk); WM_SetFocus(hDeskWin);