Esempio n. 1
0
/*********************************************************************
*
*       FRAMEWIN_AddMenu
*/
void FRAMEWIN_AddMenu(FRAMEWIN_Handle hObj, WM_HWIN hMenu) {
    if (hObj) {
        FRAMEWIN_Obj* pObj;
        WM_LOCK();
        pObj = FRAMEWIN_H2P(hObj);
        if (pObj) {
            int TitleHeight, BorderSize, IBorderSize = 0;
            int x0, y0, xSize;
            TitleHeight = FRAMEWIN__CalcTitleHeight(pObj);
            BorderSize = pObj->Props.BorderSize;
            if (pObj->Widget.State & FRAMEWIN_SF_TITLEVIS) {
                IBorderSize = pObj->Props.IBorderSize;
            }
            x0     = BorderSize;
            y0     = BorderSize + TitleHeight + IBorderSize;
            xSize  = WM__GetWindowSizeX(&pObj->Widget.Win);
            xSize -= BorderSize * 2;
            pObj->hMenu = hMenu;
            if (pObj->cb) {
                MENU_SetOwner(hMenu, pObj->hClient);
            }
            MENU_Attach(hMenu, hObj, x0, y0, xSize, 0, 0);
            WM_SetAnchor(hMenu, WM_CF_ANCHOR_LEFT | WM_CF_ANCHOR_RIGHT);
            FRAMEWIN__UpdatePositions(pObj);
            FRAMEWIN_Invalidate(hObj);
        }
        WM_UNLOCK();
    }
}
Esempio n. 2
0
/*********************************************************************
*
*       MENU_Popup
*/
void MENU_Popup(MENU_Handle hObj, WM_HWIN hDestWin, int x, int y, int xSize, int ySize, int Flags) {
  GUI_USE_PARA(Flags);
  if (hObj && hDestWin) {
    MENU_Obj* pObj;
    WM_LOCK();
    pObj = MENU_H2P(hObj);
    if (pObj) {
      pObj->Flags  |= MENU_SF_POPUP;
      pObj->Width   = ((xSize > 0) ? xSize : 0);
      pObj->Height  = ((ySize > 0) ? ySize : 0);
      x            += WM_GetWindowOrgX(hDestWin);
      y            += WM_GetWindowOrgY(hDestWin);
      MENU_SetOwner(hObj, hDestWin);
      WM_AttachWindowAt(hObj, WM_HBKWIN, x, y);
      MENU__SendMenuMessage(hDestWin, hObj, MENU_ON_OPEN, 0);
    }
    WM_UNLOCK();
  }
}