#if !defined(AFX_MYLISTBOX_H__68A86915_6DD6_4FFB_A9FF_0A375A9037CE__INCLUDED_) #define AFX_MYLISTBOX_H__68A86915_6DD6_4FFB_A9FF_0A375A9037CE__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // MyListBox.h : header file // / // CMyListBox window class CMyListBox : public CListBox { // Construction public: CMyListBox(); // Attributes public: // Operations public: // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CMyListBox) protected: virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam); //}}AFX_VIRTUAL // Implementation public: virtual ~CMyListBox(); // Generated message map functions protected: //{{AFX_MSG(CMyListBox) //}}AFX_MSG DECLARE_MESSAGE_MAP() }; / //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_MYLISTBOX_H__68A86915_6DD6_4FFB_A9FF_0A375A9037CE__INCLUDED_) // MyListBox.cpp : implementation file // #include "stdafx.h" #include "DlgBase.h" #include "MyListBox.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif / // CMyListBox CMyListBox::CMyListBox() { } CMyListBox::~CMyListBox() { } BEGIN_MESSAGE_MAP(CMyListBox, CListBox) //{{AFX_MSG_MAP(CMyListBox) ON_WM_PAINT() //}}AFX_MSG_MAP END_MESSAGE_MAP() / // CMyListBox message handlers LRESULT CMyListBox::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { // TODO: Add your specialized code here and/or call the base class if (message == LB_SETTOPINDEX) { wParam = 0; } return CListBox::WindowProc(message, wParam, lParam); } #if !defined(AFX_MYCOMBOBOX_H__FB6F2757_06D0_481F_B6A3_3F687DD8246C__INCLUDED_) #define AFX_MYCOMBOBOX_H__FB6F2757_06D0_481F_B6A3_3F687DD8246C__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // MyComboBox.h : header file // / // CMyComboBox window #include "MyListBox.h" class CMyComboBox : public CComboBox { // Construction public: CMyComboBox(); // Attributes public: // Operations public: // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CMyComboBox) //}}AFX_VIRTUAL // Implementation public: virtual ~CMyComboBox(); // Generated message map functions protected: //{{AFX_MSG(CMyComboBox) afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); afx_msg void OnDestroy(); //}}AFX_MSG DECLARE_MESSAGE_MAP() public: CEdit m_edit; CMyListBox m_listbox; }; / //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_MYCOMBOBOX_H__FB6F2757_06D0_481F_B6A3_3F687DD8246C__INCLUDED_) // MyComboBox.cpp : implementation file // #include "stdafx.h" #include "DlgBase.h" #include "MyComboBox.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif / // CMyComboBox CMyComboBox::CMyComboBox() { } CMyComboBox::~CMyComboBox() { } BEGIN_MESSAGE_MAP(CMyComboBox, CComboBox) //{{AFX_MSG_MAP(CMyComboBox) ON_WM_CTLCOLOR() ON_WM_DESTROY() //}}AFX_MSG_MAP END_MESSAGE_MAP() / // CMyComboBox message handlers HBRUSH CMyComboBox::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { if (nCtlColor == CTLCOLOR_EDIT) { if (m_edit.GetSafeHwnd() == NULL) { m_edit.SubclassWindow(pWnd->GetSafeHwnd()); } } else if (nCtlColor == CTLCOLOR_LISTBOX) { if (m_listbox.GetSafeHwnd() == NULL) { m_listbox.SubclassWindow(pWnd->GetSafeHwnd()); } } HBRUSH hbr = CComboBox::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here // TODO: Return a different brush if the default is not desired return hbr; } void CMyComboBox::OnDestroy() { if (m_edit.GetSafeHwnd() != NULL) m_edit.UnsubclassWindow(); if (m_listbox.GetSafeHwnd() != NULL) m_listbox.UnsubclassWindow(); CComboBox::OnDestroy(); // TODO: Add your message handler code here }