IEShellComboBox.h
上传用户:yatsl7111
上传日期:2007-01-08
资源大小:1433k
文件大小:4k
源码类别:

图形图象

开发平台:

Visual C++

  1. //*******************************************************************************
  2. // COPYRIGHT NOTES
  3. // ---------------
  4. // You may use this source code, compile or redistribute it as part of your application 
  5. // for free. You cannot redistribute it as a part of a software development 
  6. // library without the agreement of the author. If the sources are 
  7. // distributed along with the application, you should leave the original 
  8. // copyright notes in the source code without any changes.
  9. // This code can be used WITHOUT ANY WARRANTIES at your own risk.
  10. // 
  11. // For the latest updates to this code, check this site:
  12. // http://www.masmex.com 
  13. // after Sept 2000
  14. // 
  15. // Copyright(C) 2000 Philip Oldaker <email: philip@masmex.com>
  16. //*******************************************************************************
  17. #if !defined(AFX_IESHELLCOMBOBOX_H__1EABA279_32DD_4A2D_8957_F478E4D3E5EB__INCLUDED_)
  18. #define AFX_IESHELLCOMBOBOX_H__1EABA279_32DD_4A2D_8957_F478E4D3E5EB__INCLUDED_
  19. #if _MSC_VER > 1000
  20. #pragma once
  21. #endif // _MSC_VER > 1000
  22. // IEShellComboBox.h : header file
  23. //
  24. #include "ShellContextMenu.h"
  25. #include "ShellPidl.h"
  26. #include "Refresh.h"
  27. ////////////////////////////////////////////////
  28. // CIEShellComboBoxEdit
  29. ////////////////////////////////////////////////
  30. class CIEShellComboBoxEdit : public CEdit
  31. {
  32. public:
  33. CIEShellComboBoxEdit();
  34. virtual ~CIEShellComboBoxEdit();
  35. public:
  36. CString &GetText() { GetWindowText(m_sText); return m_sText; }
  37. void SetTreeWnd(HWND hWnd);  
  38. virtual BOOL PreTranslateMessage(MSG* pMsg);
  39. protected:
  40. private:
  41. CString m_sText;
  42. HWND m_hTreeWnd;
  43. };
  44. inline CIEShellComboBoxEdit::CIEShellComboBoxEdit()
  45. {
  46. m_hTreeWnd = NULL;
  47. }
  48. inline CIEShellComboBoxEdit::~CIEShellComboBoxEdit()
  49. {
  50. }
  51. inline void CIEShellComboBoxEdit::SetTreeWnd(HWND hWnd)
  52. {
  53. m_hTreeWnd = hWnd;
  54. }
  55. /////////////////////////////////////////////////////////////////////////////
  56. // CIEShellComboBox window
  57. class CTRL_EXT_CLASS CIEShellComboBox : public CComboBoxEx
  58. {
  59. // Construction
  60. public:
  61. CIEShellComboBox();
  62. // Attributes
  63. public:
  64. CShellPidl &GetShellPidl() { return m_ShellPidl; }
  65. LPITEMIDLIST GetSelectedPidl();
  66. void SetTreeCtrlWnd(HWND hWnd) { m_hTreeWnd = hWnd; }
  67. // Operations
  68. public:
  69. void Populate(LPITEMIDLIST pidlAbsSel=NULL);
  70. protected:
  71. void BuildFolderList(LPSHELLFOLDER pFolder,LPITEMIDLIST pidl,LPITEMIDLIST pidlAbsSel,int nIndent);
  72. void InitItems(LPITEMIDLIST pidlAbsSel);
  73. void LoadItems(LPITEMIDLIST pidlAbsSel);
  74. void LoadURLPrevList();
  75. void SetShellImageList();
  76. int AddItem(const CShCMSort *pItem);
  77. void DeleteItemData(LPTVITEMDATA pItemData);
  78. void DeleteAllItemData();
  79. void AddItems(vecCMSort &vItems,IShellFolder* pFolder,LPITEMIDLIST pidlAbs,int nIndent);
  80. void AddFolder(vecCMSort &vItems,const SHFILEINFO &FileInfo,LPITEMIDLIST pidlAbs,LPITEMIDLIST pidl,LPSHELLFOLDER pFolder,int nIndent);
  81. void SelectionChanged(bool bEnter=false);
  82. // Overrides
  83. // ClassWizard generated virtual function overrides
  84. //{{AFX_VIRTUAL(CIEShellComboBox)
  85. public:
  86. virtual void PreSubclassWindow();
  87. //}}AFX_VIRTUAL
  88. // Implementation
  89. public:
  90. virtual ~CIEShellComboBox();
  91. // Generated message map functions
  92. protected:
  93. //{{AFX_MSG(CIEShellComboBox)
  94. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  95. afx_msg void OnDestroy();
  96. afx_msg void OnKillFocus(CWnd *pNewWnd);
  97. afx_msg void OnSetFocus(CWnd *pWnd);
  98. afx_msg void OnDropDown();
  99. afx_msg void OnSelChange();
  100. afx_msg LRESULT OnCBIEPopulate(WPARAM wParam,LPARAM lParam);
  101. afx_msg LRESULT OnAppCbIeHitEnter(WPARAM wParam, LPARAM lParam );
  102. //}}AFX_MSG
  103. DECLARE_MESSAGE_MAP()
  104. private:
  105. LPMALLOC     m_pMalloc;
  106. LPITEMIDLIST m_pidlMyComputer;
  107. LPITEMIDLIST m_pidlMyDocuments;
  108. LPITEMIDLIST m_pidlInternet;
  109. CShellPidl   m_ShellPidl;
  110. vecItemData  m_vecItemData;
  111. vecCMSort    m_vItems;
  112.     HIMAGELIST   m_hImageList;
  113. CImageList  m_ImageList;
  114. HWND  m_hTreeWnd;
  115. HICON  m_hIcon;
  116. CIEShellComboBoxEdit m_cbEdit;
  117. CString  m_sText;
  118. bool  m_bInternet;
  119. };
  120. /////////////////////////////////////////////////////////////////////////////
  121. //{{AFX_INSERT_LOCATION}}
  122. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  123. #endif // !defined(AFX_IESHELLCOMBOBOX_H__1EABA279_32DD_4A2D_8957_F478E4D3E5EB__INCLUDED_)