亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? propertylist.h

?? 一款最完整的工業組態軟源代碼
?? H
?? 第 1 頁 / 共 3 頁
字號:
            if( (m_dwExtStyle & PLS_EX_CATEGORIZED) && GET_X_LPARAM(lParam) < CATEGORY_INDENT ) {
               prop->Activate(PACT_EXPAND, 0);
            }
            else {
               if( prop->IsEnabled() ) prop->Activate(PACT_CLICK, lParam);
            }
         }
      }
      return lRes;
   }
   LRESULT OnLButtonUp(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& bHandled)
   {
      int x = _GetDragPos(GET_X_LPARAM(lParam));
      if( m_iPrevious > 0 ) {
         m_iMiddle += x - m_iPrevious;
         Invalidate();
      }
      m_iPrevious = 0;
      m_iPrevXGhostBar = 0;
      bHandled = FALSE;
      return 0;
   }
   LRESULT OnDblClick(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/)
   {
      LRESULT lRes = DefWindowProc(uMsg, wParam, lParam);
      int idx = GetCurSel();
      if( idx != -1 ) {
         IProperty* prop = reinterpret_cast<IProperty*>(TBase::GetItemData(idx));
         ATLASSERT(prop);
         // Ask owner first
         NMPROPERTYITEM nmh = { m_hWnd, GetDlgCtrlID(), PIN_DBLCLICK, prop };
         if( ::SendMessage(GetParent(), WM_NOTIFY, nmh.hdr.idFrom, (LPARAM) &nmh) == 0 ) {
            // Send DblClick action
            if( prop->IsEnabled() ) prop->Activate(PACT_DBLCLICK, lParam);
         }
      }
      return lRes;
   }
   LRESULT OnMouseMove(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL &bHandled)
   {
      // Column resize code added by Remco Verhoef, thanks.
      if( m_iPrevious > 0 ) {
         int x = _GetDragPos(GET_X_LPARAM(lParam));
         if( m_iPrevXGhostBar != x ) {
            if( m_iPrevXGhostBar ) _DrawGhostBar(m_iPrevXGhostBar);
            m_iPrevXGhostBar = x;
            _DrawGhostBar(m_iPrevXGhostBar);
         }
         return 0;
      }
      bHandled = FALSE;
      return 0;
   }
   LRESULT OnSetCursor(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled)
   {
      POINT pt = { 0 };
      ::GetCursorPos(&pt);
      ScreenToClient(&pt);
      int iIndent = m_dwExtStyle & PLS_EX_CATEGORIZED ? CATEGORY_INDENT : 0;
      if( pt.x == m_iMiddle + iIndent ) {
         ::SetCursor(::LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZEWE)));
         return FALSE;
      } 
      bHandled = FALSE;
      return 0;
   }
   LRESULT OnSettingChange(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
   {
      // Custom styles
      m_di.dwExtStyle = m_dwExtStyle;
      // Standard colors
      m_di.clrText = ::GetSysColor(COLOR_WINDOWTEXT);
      m_di.clrBack = ::GetSysColor(COLOR_WINDOW);
      m_di.clrSelText = ::GetSysColor(COLOR_HIGHLIGHTTEXT);
      m_di.clrSelBack = ::GetSysColor(COLOR_HIGHLIGHT);
      m_di.clrDisabled = ::GetSysColor(COLOR_GRAYTEXT);
      // Border
      m_di.clrBorder = ::GetSysColor(COLOR_BTNFACE);
      if( !m_BorderPen.IsNull() ) m_BorderPen.DeleteObject();
      m_di.Border = m_BorderPen.CreatePen(PS_SOLID, 1, m_di.clrBorder);
      // Fonts
      if( !m_TextFont.IsNull() ) m_TextFont.DeleteObject();
      if( !m_CategoryFont.IsNull() ) m_CategoryFont.DeleteObject();
      LOGFONT lf;
      HFONT hFont = (HFONT)::SendMessage(GetParent(), WM_GETFONT, 0, 0);
      if( hFont == NULL ) hFont = AtlGetDefaultGuiFont();
      ::GetObject(hFont, sizeof(lf), &lf);
      m_di.TextFont = m_TextFont.CreateFontIndirect(&lf);
      SetFont(m_di.TextFont);
      if( (m_dwExtStyle & PLS_EX_XPLOOK) == 0 ) lf.lfWeight += FW_BOLD;
      m_di.CategoryFont = m_CategoryFont.CreateFontIndirect(&lf);
      // Text metrics
      CClientDC dc(m_hWnd);
      HFONT hOldFont = dc.SelectFont(m_di.TextFont);
      dc.GetTextMetrics(&m_di.tmText);
      dc.SelectFont(hOldFont);
      // Repaint
      Invalidate();
      return 0;
   }

   LRESULT OnNavigate(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& /*bHandled*/)
   {
      switch( wParam ) {
      case VK_UP:
      case VK_DOWN:
         {
            _DestroyInplaceWindow();
            SetCurSel(GetCurSel() + (wParam == VK_UP ? -1 : 1));
            BOOL bDummy;
            OnSelChange(0, 0, NULL, bDummy);
         }
         break;
      }
      return 0;
   }
   LRESULT OnUpdateProperty(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/)
   {
      // Updates a property value using an active editor window.
      // The editor window uses this message to update the attached property class.
      HWND hWnd = reinterpret_cast<HWND>(lParam);
      ATLASSERT(hWnd);
      if( !::IsWindow(hWnd) || m_iInplaceIndex == -1 ) return 0;
      ATLASSERT(hWnd==m_hwndInplace);
      IProperty* prop = reinterpret_cast<IProperty*>(TBase::GetItemData(m_iInplaceIndex));
      ATLASSERT(prop);
      if( prop == NULL ) return 0;
      // Ask owner about change
      NMPROPERTYITEM nmh = { m_hWnd, GetDlgCtrlID(), PIN_ITEMCHANGING, prop };
      if( ::SendMessage(GetParent(), WM_NOTIFY, nmh.hdr.idFrom, (LPARAM) &nmh) == 0 ) {
         // Set new value
         if( !prop->SetValue(hWnd) ) ::MessageBeep((UINT)-1);
         // Let owner know
         nmh.hdr.code = PIN_ITEMCHANGED;
         ::SendMessage(GetParent(), WM_NOTIFY, nmh.hdr.idFrom, (LPARAM) &nmh);
         // Repaint item
         InvalidateItem(m_iInplaceIndex);
         // Recycle in-place control so it displays the new value
         // TODO: Traps condition where the SetValue() fails!
         int idx = FindProperty(prop);
         if( idx >= 0 && idx == m_iInplaceIndex ) _SpawnInplaceWindow(prop, idx);
      }
      return 0;
   }
   LRESULT OnCancelProperty(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/)
   {
      // Updates a property value using an active editor window.
      // The editor window uses this message to update the attached property class.
      HWND hWnd = reinterpret_cast<HWND>(lParam);
      ATLASSERT(hWnd);
      if( !::IsWindow(hWnd) || m_iInplaceIndex == -1 ) return 0;
      ATLASSERT(hWnd==m_hwndInplace);
      IProperty* prop = reinterpret_cast<IProperty*>(TBase::GetItemData(m_iInplaceIndex));
      ATLASSERT(prop);
      if( prop == NULL ) return 0;
      // Repaint item
      InvalidateItem(m_iInplaceIndex);
      // Recycle in-place control so it displays the (old) value
      int idx = FindProperty(prop);
      if( idx >= 0 && idx == m_iInplaceIndex ) _SpawnInplaceWindow(prop, idx);
      return 0;
   }
   LRESULT OnChangedProperty(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/)
   {
      // Updates a property value.
      // A property class uses this message to make sure the corresponding editor window
      // is updated as well.
      IProperty* prop = reinterpret_cast<IProperty*>(lParam);
      VARIANT* pVariant = reinterpret_cast<VARIANT*>(wParam);
      ATLASSERT(prop && pVariant);
      if( prop == NULL || pVariant == NULL ) return 0;
      // Ask owner about change
      NMPROPERTYITEM nmh = { m_hWnd, GetDlgCtrlID(), PIN_ITEMCHANGING, prop };
      if( ::SendMessage(GetParent(), WM_NOTIFY, nmh.hdr.idFrom, (LPARAM) &nmh) == 0 ) {
         // Set new value
         // NOTE: Do not call this from IProperty::SetValue(VARIANT*) = endless loop
         if( !prop->SetValue(*pVariant) ) ::MessageBeep((UINT)-1);
         // Let owner know
         nmh.hdr.code = PIN_ITEMCHANGED;
         ::SendMessage(GetParent(), WM_NOTIFY, nmh.hdr.idFrom, (LPARAM) &nmh);
      }
      // Locate the updated property index
      int idx = FindProperty(prop);
      // Repaint item
      InvalidateItem(idx);
      // Recycle in-place control so it displays the new value
      if( idx >= 0 && idx == m_iInplaceIndex ) _SpawnInplaceWindow(prop, idx);
      return 0;
   }
   LRESULT OnExpand(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/)
   {
      ATLASSERT(lParam);
      ExpandItem(reinterpret_cast<IProperty*>(lParam));
      return 0;
   }
   LRESULT OnCollapse(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/)
   {
      ATLASSERT(lParam);
      CollapseItem(reinterpret_cast<IProperty*>(lParam));
      return 0;
   }

   LRESULT OnSelChange(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
   {
      if( m_iPrevXGhostBar > 0 ) _DrawGhostBar(m_iPrevXGhostBar);

      IProperty* prop = NULL;
      int idx = GetCurSel();
      if( idx != -1 ) {
         prop = reinterpret_cast<IProperty*>(TBase::GetItemData(idx));
         ATLASSERT(prop);
         if( prop->GetKind() != PROPKIND_CATEGORY && prop->IsEnabled() ) {
            _SpawnInplaceWindow(prop, idx);
            prop->Activate(PACT_ACTIVATE, 0);
            if( m_dwExtStyle & PLS_EX_SINGLECLICKEDIT ) {
               if( prop->GetKind() == PROPKIND_EDIT ) prop->Activate(PACT_DBLCLICK, 0);
            }
         }
         else {
            _DestroyInplaceWindow();
         }
      }
      // Let owner know
      NMPROPERTYITEM nmh = { m_hWnd, GetDlgCtrlID(), PIN_SELCHANGED, prop };
      ::SendMessage(GetParent(), WM_NOTIFY, nmh.hdr.idFrom, (LPARAM) &nmh);

      if( m_iPrevXGhostBar > 0 ) _DrawGhostBar(m_iPrevXGhostBar);
      return 0;
   }

   // Owner draw methods

   void DeleteItem(LPDELETEITEMSTRUCT lpDIS)
   {
      _DestroyInplaceWindow();
      if( lpDIS->itemData ) delete reinterpret_cast<IProperty*>(lpDIS->itemData);
   }
   void MeasureItem(LPMEASUREITEMSTRUCT lpMIS)
   {
      lpMIS->itemHeight = m_di.tmText.tmHeight + 3;
   }
   void DrawItem(LPDRAWITEMSTRUCT lpDIS)
   {
      if( lpDIS->itemID == -1 ) return; // If there are no list box items, skip this message. 

      CDCHandle dc(lpDIS->hDC);
      RECT rc = lpDIS->rcItem;

      IProperty* prop = reinterpret_cast<IProperty*>(lpDIS->itemData);
      ATLASSERT(prop);
      BYTE kind = prop->GetKind();

      // Customize item
      PROPERTYDRAWINFO di = m_di;
      di.hDC = dc;
      di.state = lpDIS->itemState & ~ODS_DISABLED;
      if( lpDIS->itemID == (UINT) m_iInplaceIndex ) di.state |= ODS_COMBOBOXEDIT;

      // Special style for removing selection when control hasn't focus
      if( (di.dwExtStyle & PLS_EX_SHOWSELALWAYS) == 0 && (::GetFocus() != m_hWnd) ) {
         di.state &= ~ODS_SELECTED;
      }

      // Prepare drawing
      HFONT hOldFont = dc.SelectFont(di.TextFont);

      // If this control is painted with categories
      if( m_dwExtStyle & PLS_EX_CATEGORIZED ) {
         // We paint a nice border in the gap with the plus/minus signs
         HPEN hOldPen = dc.SelectPen(di.Border);
         dc.MoveTo(rc.left + CATEGORY_INDENT - 1, rc.top);
         dc.LineTo(rc.left + CATEGORY_INDENT - 1, rc.bottom);
         if( m_dwExtStyle & PLS_EX_XPLOOK ) {
            RECT rcIndent = { rc.left, rc.top, rc.left + CATEGORY_INDENT, rc.bottom };
            dc.FillRect(&rcIndent, ::GetSysColorBrush(COLOR_3DFACE));
         }
         // Paint plus/minus sign if it's actually a category item
         if( kind == PROPKIND_CATEGORY ) {
            dc.SelectFont(di.CategoryFont);
            CCategoryProperty* pCategory = static_cast<CCategoryProperty*>(prop);
            POINT ptMiddle = { rc.left + (CATEGORY_INDENT / 2), rc.top + ((rc.bottom - rc.top) / 2) };
            RECT rcSymbol = { ptMiddle.x - 4, ptMiddle.y - 4, ptMiddle.x + 5, ptMiddle.y + 5 };
            dc.SelectStockPen(BLACK_PEN);
            HBRUSH hOldBrush = dc.SelectStockBrush(NULL_BRUSH);
            dc.Rectangle(&rcSymbol);
            dc.SelectBrush(hOldBrush);
            if( !pCategory->IsExpanded() ) {
               dc.MoveTo(ptMiddle.x, ptMiddle.y - 2);
               dc.LineTo(ptMiddle.x, ptMiddle.y + 3);
            }
            dc.MoveTo(ptMiddle.x - 2, ptMiddle.y);
            dc.LineTo(ptMiddle.x + 3, ptMiddle.y);
         }
         dc.SelectPen(hOldPen);
         rc.left += CATEGORY_INDENT;
      }
     
      // Calculate rectangles for the two sides
      RECT rcName = rc;
      RECT rcValue = rc;
      rcName.right = rc.left + m_iMiddle;
      rcValue.left = rc.left + m_iMiddle + 1;

      // Special handling of XP-like categories
      if( kind == PROPKIND_CATEGORY && (m_dwExtStyle & PLS_EX_XPLOOK) != 0 ) {
         rcName.right = rcValue.left = rc.right;
      }

      // Draw name
      di.rcItem = rcName;
      prop->DrawName(di);
           
      // Draw value
      // Thanks to Pascal Binggeli who suggested the Inplace-editor
      // check below...
      if( (int) lpDIS->itemID != m_iInplaceIndex ) {
         di.rcItem = rcValue;
         dc.FillSolidRect(&rcValue, di.clrBack);

         if( !prop->IsEnabled() ) di.state |= ODS_DISABLED;
         prop->DrawValue(di);
      }

      // Paint borders
      HPEN hOldPen = dc.SelectPen(di.Border);
      dc.MoveTo(rc.left, rc.bottom - 1);
      dc.LineTo(rc.right, rc.bottom - 1);     
      // Not painting middle border if XP look (thanks to Ludvig A Norin)
      if( !(kind == PROPKIND_CATEGORY && (m_dwExtStyle & PLS_EX_XPLOOK) != 0) ) {
         dc.MoveTo(rc.left + m_iMiddle, rc.top);
         dc.LineTo(rc.left + m_iMiddle, rc.bottom - 1);
      }
      dc.SelectPen(hOldPen);

      dc.SelectFont(hOldFont);
   }
};


class CPropertyListCtrl : public CPropertyListImpl<CPropertyListCtrl>
{
public:
   DECLARE_WND_SUPERCLASS(_T("WTL_PropertyList"), GetWndClassName())
};


#endif __PROPERTYLIST__H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av在线播放网址| 欧美激情一区不卡| 欧美色图免费看| 91黄色免费看| 欧美网站大全在线观看| 在线视频国内自拍亚洲视频| 91网站最新地址| 91麻豆精品国产91久久久久久久久| www.爱久久.com| 99久久亚洲一区二区三区青草| 99精品偷自拍| 欧美在线观看视频一区二区| 欧美私人免费视频| 欧美精品日韩一区| 91精品久久久久久久久99蜜臂| 日韩欧美三级在线| 精品国产乱码久久久久久蜜臀| 精品久久一区二区| 欧美激情在线一区二区| 国产精品美女久久久久高潮| 亚洲视频中文字幕| 亚洲成人在线免费| 麻豆91免费看| 丁香天五香天堂综合| 99精品热视频| 欧美日韩大陆在线| 欧美电影免费观看高清完整版在| 精品国产伦一区二区三区观看体验| 久久久久久97三级| 亚洲人成网站精品片在线观看| 午夜精品在线看| 国产一区二区三区在线观看免费视频| 懂色av一区二区在线播放| 一本色道久久综合精品竹菊| 欧美日本国产视频| 久久综合九色综合97婷婷| 亚洲天堂免费看| 日韩黄色一级片| 国产91对白在线观看九色| 91同城在线观看| 欧美一区午夜视频在线观看| 欧美激情资源网| 亚洲va欧美va人人爽| 狠狠色狠狠色合久久伊人| 91蝌蚪porny| 欧美一区二区久久久| 国产无一区二区| 午夜视黄欧洲亚洲| 国产精品66部| 欧美喷水一区二区| 中文字幕乱码亚洲精品一区 | 精品一区二区综合| aaa欧美色吧激情视频| 制服丝袜成人动漫| 中文天堂在线一区| 美国十次综合导航| 色欧美乱欧美15图片| 精品国产青草久久久久福利| 亚洲精品国产视频| 国产大片一区二区| 91麻豆精品国产自产在线观看一区 | 欧美一区二区三区喷汁尤物| 国产精品第13页| 精品一区二区三区在线播放视频| 色综合久久综合| 国产欧美日韩在线观看| 婷婷久久综合九色综合伊人色| 成人免费av资源| 日韩久久精品一区| 亚洲国产精品视频| jiyouzz国产精品久久| 精品少妇一区二区三区免费观看 | 日本aⅴ免费视频一区二区三区| eeuss鲁片一区二区三区在线观看| 日韩免费一区二区三区在线播放| 亚洲综合精品自拍| 欧美精品一区二区在线播放| 国产精品国产精品国产专区不片| 久久成人麻豆午夜电影| 欧美色欧美亚洲另类二区| 亚洲欧洲日本在线| 国产aⅴ精品一区二区三区色成熟| 91精品国产91久久久久久一区二区| 一区二区三区成人在线视频| 成人性生交大合| 国产欧美一区二区三区网站 | 99久久er热在这里只有精品66| 精品国产乱码久久久久久浪潮| 日韩av电影一区| 欧美系列亚洲系列| 亚洲女同女同女同女同女同69| 粉嫩一区二区三区性色av| 337p粉嫩大胆噜噜噜噜噜91av | 91麻豆免费在线观看| 日本一区二区三区久久久久久久久不| 久久精品国产久精国产| 51精品秘密在线观看| 亚洲第一福利视频在线| 日本精品视频一区二区三区| 亚洲免费观看高清完整版在线观看熊 | 樱花影视一区二区| 色拍拍在线精品视频8848| 日韩理论在线观看| av在线不卡电影| 亚洲国产成人一区二区三区| 国产v综合v亚洲欧| 国产免费成人在线视频| 丁香另类激情小说| 国产精品视频一区二区三区不卡| 粉嫩高潮美女一区二区三区| 欧美国产精品v| www.亚洲在线| 亚洲欧美日韩在线播放| 色综合久久中文综合久久牛| 洋洋成人永久网站入口| 欧美日韩免费观看一区二区三区| 亚洲午夜免费视频| 欧美一区午夜视频在线观看 | 欧美日产在线观看| 日韩av成人高清| 日韩一区二区三区视频在线| 久久99精品久久久久婷婷| 久久精品一区二区三区不卡| 成人动漫在线一区| 亚洲精品成人悠悠色影视| 欧美日韩高清一区二区三区| 日本美女一区二区| 久久久夜色精品亚洲| 97久久超碰国产精品电影| 亚洲午夜羞羞片| 精品国产一区二区三区久久影院| 国产高清亚洲一区| 亚洲精品亚洲人成人网| 欧美精品黑人性xxxx| 精品一区二区综合| 18成人在线视频| 欧美精品久久久久久久多人混战| 精品一二线国产| 亚洲人午夜精品天堂一二香蕉| 欧美妇女性影城| 美国十次综合导航| 中文字幕在线不卡视频| 欧美日韩一区不卡| 国产一区欧美日韩| 亚洲欧美国产毛片在线| 日韩一级高清毛片| 91小视频在线免费看| 麻豆精品一区二区综合av| 国产精品欧美综合在线| 欧美美女直播网站| 国产成人午夜精品影院观看视频| 亚洲激情图片qvod| 久久久国际精品| 欧美综合视频在线观看| 国内精品嫩模私拍在线| 一区二区在线观看免费视频播放| 欧美xxxxx牲另类人与| 色天使色偷偷av一区二区| 国产乱子伦一区二区三区国色天香| 亚洲精品一二三四区| 2021国产精品久久精品| 在线日韩av片| 高潮精品一区videoshd| 日韩制服丝袜先锋影音| 国产精品欧美一级免费| 欧美第一区第二区| 欧美色老头old∨ideo| 不卡一区二区三区四区| 久久av老司机精品网站导航| 亚洲自拍另类综合| 国产精品久久久久久久浪潮网站| 91精品在线免费观看| 91美女福利视频| 成人影视亚洲图片在线| 麻豆91精品91久久久的内涵| 亚洲综合色区另类av| 欧美国产精品一区二区三区| 日韩免费性生活视频播放| 欧美日韩免费电影| 色婷婷综合激情| 成人午夜激情影院| 国产美女视频一区| 日韩电影网1区2区| 亚洲综合激情网| 亚洲免费观看高清完整版在线观看熊| 国产农村妇女毛片精品久久麻豆| 精品久久久久99| 日韩视频在线你懂得| 欧美日韩极品在线观看一区| 91久久精品一区二区二区| 本田岬高潮一区二区三区| 国内精品免费在线观看| 九九久久精品视频| 免费成人深夜小野草| 丝袜诱惑亚洲看片| 亚洲午夜免费视频| 亚洲韩国一区二区三区| 亚洲另类色综合网站| 亚洲日本在线a| 中文字幕五月欧美|