????? ??? ????? CListBox CEdit ???? ?? CComboBox

???? ???????: 174667 - ??? ???????? ???? ????? ????? ??? ???????.
????? ???? | ?? ????

?? ??? ??????

??????

????? ????? ?????? ????? ???? ???? ???? ????? ???? ??? ????? ??? ??? ????? ??????? ?? ???? ??????? ???? ???? ??????? ??????. ???? ??????? ?? ???? ?? ????? ??? ?????? ??? ????? ???? HWNDs ?????? ?????? ?????.

??? ????? ????? ??????? ?????? ??????? ????? ????????? ????? ???? ???? ????? ??? ????? ????? ?? ????? WM_CTLCOLORXXX. ???? ???? Win32 WM_CTLCOLOREDIT ?????? ?????? WM_CTLCOLORLISTBOX, ?? ??? ??????? ??? ???? ???? ??? ?????? ??? HWNDs ?????? ????? ?????? ???? ??????? ??????.

???? ?? ??? CSuperComboBox ??? ????? MFC ??? ???????. ????? ??? MFC ?????? ???? ??????? WM_CTLCOLOR ??? OnCtlColor ? subclassing ???? ????.

??????? ????

?????? ClassWizard ?????? ??? ?? CComboBox ?????? ??????? ????? WM_CTLCOLOR ? WM_DESTROY. ?? ?????? ????? ??? ?????? ????? ???????? m_edit ? m_listbox ??????. ???????? ?? ???? ???????? ???????? ?? ??????? ??????? ?????:

????? ????????? ????????

   // SuperComboBox.h : header file
   class CSuperComboBox : public CComboBox
   {
   public:
      CEdit      m_edit;
      CListBox   m_listbox;
   protected:
      afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
      afx_msg void OnDestroy();
   ...
   };

   // SuperComboBox.cpp : implementation file
   HBRUSH CSuperComboBox::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
   {
      if (nCtlColor == CTLCOLOR_EDIT)
      {
         //[ASCII 160][ASCII 160][ASCII 160]Edit control
         if (m_edit.GetSafeHwnd() == NULL)
            m_edit.SubclassWindow(pWnd->GetSafeHwnd());
      }
      else if (nCtlColor == CTLCOLOR_LISTBOX)
      {
         //ListBox control
         if (m_listbox.GetSafeHwnd() == NULL)
            m_listbox.SubclassWindow(pWnd->GetSafeHwnd());
      }
      HBRUSH hbr = CComboBox::OnCtlColor(pDC, pWnd, nCtlColor);
      return hbr;
   }

   void CSuperComboBox::OnDestroy()
   {
      if (m_edit.GetSafeHwnd() != NULL)
         m_edit.UnsubclassWindow();
      if (m_listbox.GetSafeHwnd() != NULL)
         m_listbox.UnsubclassWindow();
      CComboBox::OnDestroy();
   }
				
???? ?? ?? subclassing ???? ? ???? ?????? ??? ?? ??? ????? ??? ????? ??? ?????. ???? ????? ??? ?? ????? ???? ?????? ??????? (??? ???? ??????? ????? ???? ?????? ??? ?? ???? ?????? ?????? ??????? ? ???????). ?? ???? ??? ??????? ??? ????? ??? ?????? ??? ???????? subclassed ?????? ?? ??? ???????.

(?) ???? ???? Microsoft ? ???? ???? ?????. ????????? ?????? Kelly Marie Ward ? ???? Microsoft

???????

???? ???????: 174667 - ????? ??? ??????: 30/????/1427 - ??????: 4.1
????? ???
  • Microsoft Foundation Class Library 4.2, ????? ?????? ??:
    • Microsoft Visual C++ 4.0 Standard Edition
    • Microsoft Visual C++ 4.1 Subscription
    • Microsoft Visual C++ 4.2 Enterprise Edition
    • Microsoft Visual C++ 4.2 Professional Edition
    • Microsoft Visual C++ 5.0 Enterprise Edition
    • Microsoft Visual C++ 5.0 Professional Edition
    • Microsoft Visual C++ 6.0 Enterprise Edition
    • Microsoft Visual C++ 6.0 Professional Edition
    • Microsoft Visual C++, 32-bit Learning Edition 6.0
????? ??????: 
kbmt kbcode kbcombobox kbctrl kbhowto kbuidesign KB174667 KbMtar
????? ????
???: ??? ????? ??? ?????? ???????? ?????? ????? ???? ????? ?????????? ????? ?? ????????? ?????? ????. ???? ???? ?????????? ???? ?? ???????? ???????? ?????? ????????? ????? ????????? ???????? ????? ???????? ?????? ?? ?????? ??? ?? ???????? ???????? ?? ????? ??????? ?????? ??? ??????? ?????? ??. ?????? ?? ???? ??? ??????? ???????? ????? ?? ???? ????? ?????? ??? ????? ??? ????? ??????? ?? ????? ?? ?????? ??? ??? ??????? ??????? ?? ????? ????? ????? ????? ?????. ?? ????? ???? ?????????? ??????? ??? ????? ?? ??????? ?? ????? ?????? ?? ??? ????? ?? ????? ??????? ?? ???????? ?? ??? ???????. ???? ???? ?????????? ???????? ??? ????? ?????? ??????? ??????
???? ??? ????? ??????? ?????? ??????????174667

????? ???????