ImageView.cpp 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310
  1. // ImageView.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "SkinBuilder.h"
  5. #include "ImageView.h"
  6. #include ".\imageview.h"
  7. #define SKIN 0
  8. #define IMAGES 1
  9. #define WNDSKIN 2
  10. // CImageView
  11. IMPLEMENT_DYNCREATE( CImageView , CTreeView )
  12. CImageView::CImageView()
  13. {
  14. m_pImages = GetImages();
  15. }
  16. CImageView::~CImageView()
  17. {
  18. }
  19. BEGIN_MESSAGE_MAP(CImageView, CTreeView)
  20. ON_WM_CREATE()
  21. ON_WM_CONTEXTMENU()
  22. ON_NOTIFY_REFLECT(TVN_SELCHANGED, OnTvnSelchanged)
  23. ON_WM_RBUTTONDOWN()
  24. END_MESSAGE_MAP()
  25. // CImageView diagnostics
  26. #ifdef _DEBUG
  27. void CImageView::AssertValid() const
  28. {
  29. CTreeView::AssertValid();
  30. }
  31. void CImageView::Dump( CDumpContext & dc ) const
  32. {
  33. CTreeView::Dump( dc );
  34. }
  35. #endif //_DEBUG
  36. // CImageView message handlers
  37. int CImageView::OnCreate( LPCREATESTRUCT lpCreateStruct )
  38. {
  39. lpCreateStruct->style |= TVS_HASLINES | TVS_SHOWSELALWAYS | TVS_HASBUTTONS | TVS_LINESATROOT;
  40. if ( CTreeView::OnCreate( lpCreateStruct ) == -1 )
  41. {
  42. return -1;
  43. }
  44. // TODO: Add your specialized creation code here
  45. m_imageList.Create( IDB_BITMAP_MAIN,16,42,RGB( 255,0,255 ) );
  46. GetTreeCtrl().SetImageList( &m_imageList,TVSIL_NORMAL );
  47. m_itemSkins = GetTreeCtrl().InsertItem( _T( "skin" ),0,0 );
  48. m_itemImages = GetTreeCtrl().InsertItem( _T( "images" ),1,1,m_itemSkins );
  49. m_itemSkinObject = GetTreeCtrl().InsertItem( _T( "SkinObject" ),3,3,m_itemSkins );
  50. GetTreeCtrl().Expand( m_itemSkins,TVE_EXPAND );
  51. return 0;
  52. }
  53. void CImageView::OnContextMenu( CWnd* /*pWnd*/ , CPoint /*point*/ )
  54. {
  55. // TODO: Add your message handler code here
  56. }
  57. void CImageView::OnTvnSelchanged( NMHDR * pNMHDR , LRESULT * pResult )
  58. {
  59. LPNMTREEVIEW pNMTreeView = reinterpret_cast< LPNMTREEVIEW >( pNMHDR );
  60. // TODO: Add your control notification handler code here
  61. HTREEITEM hItem = GetTreeCtrl().GetSelectedItem();
  62. GetDocument()->m_nSelectedType = GetTreeCtrl().GetItemData( hItem );
  63. if ( GetDocument()->m_nSelectedType == OBJECT_TYPE_IMAGE )
  64. {
  65. CString strName;
  66. strName = GetTreeCtrl().GetItemText( hItem );
  67. GetDocument()->m_pCurrentImage = GetDocument()->m_pSkin->FindIamge( strName );
  68. }
  69. if ( GetDocument()->m_nSelectedType == OBJECT_TYPE_SKINOBJECT_WINDOW )
  70. {
  71. CString strName;
  72. strName = GetTreeCtrl().GetItemText( hItem );
  73. GetDocument()->m_pCurrentObject = GetDocument()->m_pSkin->FindObjectSkin( strName );
  74. }
  75. else if ( GetDocument()->m_nSelectedType == OBJECT_TYPE_SKINOBJECT_WINBUTTON )
  76. {
  77. CString strName;
  78. strName = GetTreeCtrl().GetItemText( hItem );
  79. CWindowSkin * pWin = GetSkin().GetWindowSkin();
  80. GetDocument()->m_pCurrentObject = pWin;
  81. GetDocument()->m_pCurrentWinButton = pWin->FindButton( strName );
  82. }
  83. else
  84. {
  85. CString strName;
  86. strName = GetTreeCtrl().GetItemText( hItem );
  87. GetDocument()->m_pCurrentObject = GetDocument()->m_pSkin->FindObjectSkin( strName );
  88. }
  89. GetDocument()->UpdateAllViews( this );
  90. *pResult = 0;
  91. }
  92. void CImageView::OnUpdate( CView* /*pSender*/ , LPARAM /*lHint*/ , CObject* /*pHint*/ )
  93. {
  94. // TODO: Add your specialized code here and/or call the base class
  95. GetTreeCtrl().DeleteAllItems();
  96. m_itemSkins = GetTreeCtrl().InsertItem( _T( "skin" ),0,0 );
  97. GetTreeCtrl().SetItemData( m_itemSkins,OBJECT_TYPE_SKINS );
  98. m_itemImages = GetTreeCtrl().InsertItem( _T( "images" ),1,1,m_itemSkins );
  99. GetTreeCtrl().SetItemData( m_itemImages,OBJECT_TYPE_IMAGES );
  100. m_itemSkinObject = GetTreeCtrl().InsertItem( _T( "SkinObject" ),3,3,m_itemSkins );
  101. GetTreeCtrl().SetItemData( m_itemSkinObject,OBJECT_TPPE_SKINOBJECTS );
  102. GetTreeCtrl().Expand( m_itemSkins,TVE_EXPAND );
  103. int i;
  104. HTREEITEM hItem;
  105. for ( i = 0 ; i < m_pImages->m_arrayImages.GetSize(); i++ )
  106. {
  107. CSkinBitmap * pImage = m_pImages->m_arrayImages.GetAt( i );
  108. hItem = GetTreeCtrl().InsertItem( pImage->m_strName,9,9,m_itemImages );
  109. GetTreeCtrl().SetItemData( hItem,OBJECT_TYPE_IMAGE );
  110. GetTreeCtrl().Expand( m_itemImages,TVE_EXPAND );
  111. }
  112. for ( i = 0 ; i < GetSkin().m_arraySkinObjects.GetSize(); i++ )
  113. {
  114. CObjectSkin * pObject = GetSkin().m_arraySkinObjects.GetAt( i );
  115. if ( pObject->GetSkinType() == keWindowSkin )
  116. {
  117. CWindowSkin * pWin = ( CWindowSkin * ) pObject;
  118. HTREEITEM hParent;
  119. hParent = GetTreeCtrl().InsertItem( pObject->GetName(),3,3,m_itemSkinObject );
  120. GetTreeCtrl().SetItemData( hParent,OBJECT_TYPE_SKINOBJECT_WINDOW );
  121. for ( int i = 0 ; i < pWin->GetChildrenCount() ; i++ )
  122. {
  123. hItem = GetTreeCtrl().InsertItem( pWin->GetAt( i )->GetName(),3,3,hParent );
  124. GetTreeCtrl().SetItemData( hItem,OBJECT_TYPE_SKINOBJECT_WINBUTTON );
  125. }
  126. GetTreeCtrl().Expand( hParent,TVE_EXPAND );
  127. }
  128. else if ( pObject->GetSkinType() == keScrollBarSkin )
  129. {
  130. HTREEITEM hParent;
  131. hParent = GetTreeCtrl().InsertItem( pObject->GetName(),3,3,m_itemSkinObject );
  132. GetTreeCtrl().SetItemData( hParent,OBJECT_TYPE_SKINOBJECT_SCROLLBAR );
  133. }
  134. else if ( pObject->GetSkinType() == keButtonSkin )
  135. {
  136. HTREEITEM hParent;
  137. hParent = GetTreeCtrl().InsertItem( pObject->GetName(),3,3,m_itemSkinObject );
  138. GetTreeCtrl().SetItemData( hParent,OBJECT_TYPE_SKINOBJECT_BUTTON );
  139. }
  140. else if ( pObject->GetSkinType() == keRadioSkin )
  141. {
  142. HTREEITEM hParent;
  143. hParent = GetTreeCtrl().InsertItem( pObject->GetName(),3,3,m_itemSkinObject );
  144. GetTreeCtrl().SetItemData( hParent,OBJECT_TYPE_SKINOBJECT_RADIO );
  145. }
  146. else if ( pObject->GetSkinType() == keCheckBoxSkin )
  147. {
  148. HTREEITEM hParent;
  149. hParent = GetTreeCtrl().InsertItem( pObject->GetName(),3,3,m_itemSkinObject );
  150. GetTreeCtrl().SetItemData( hParent,OBJECT_TYPE_SKINOBJECT_CHECK );
  151. }
  152. else if ( pObject->GetSkinType() == keGroupBoxSkin )
  153. {
  154. HTREEITEM hParent;
  155. hParent = GetTreeCtrl().InsertItem( pObject->GetName(),3,3,m_itemSkinObject );
  156. GetTreeCtrl().SetItemData( hParent,OBJECT_TYPE_SKINOBJECT_GROUP );
  157. }
  158. else if ( pObject->GetSkinType() == keEditSkin )
  159. {
  160. HTREEITEM hParent;
  161. hParent = GetTreeCtrl().InsertItem( pObject->GetName(),3,3,m_itemSkinObject );
  162. GetTreeCtrl().SetItemData( hParent,OBJECT_TYPE_SKINOBJECT_EDIT );
  163. }
  164. else if ( pObject->GetSkinType() == keStaticSkin )
  165. {
  166. HTREEITEM hParent;
  167. hParent = GetTreeCtrl().InsertItem( pObject->GetName(),3,3,m_itemSkinObject );
  168. GetTreeCtrl().SetItemData( hParent,OBJECT_TYPE_SKINOBJECT_STATIC );
  169. }
  170. else if ( pObject->GetSkinType() == keComboxSkin )
  171. {
  172. HTREEITEM hParent;
  173. hParent = GetTreeCtrl().InsertItem( pObject->GetName(),3,3,m_itemSkinObject );
  174. GetTreeCtrl().SetItemData( hParent,OBJECT_TYPE_SKINOBJECT_COMBOX );
  175. }
  176. else if ( pObject->GetSkinType() == keListBoxSkin )
  177. {
  178. HTREEITEM hParent;
  179. hParent = GetTreeCtrl().InsertItem( pObject->GetName(),3,3,m_itemSkinObject );
  180. GetTreeCtrl().SetItemData( hParent,OBJECT_TYPE_SKINOBJECT_LISTBOX );
  181. }
  182. else if ( pObject->GetSkinType() == kePopMenuSkin )
  183. {
  184. HTREEITEM hParent;
  185. hParent = GetTreeCtrl().InsertItem( pObject->GetName(),3,3,m_itemSkinObject );
  186. GetTreeCtrl().SetItemData( hParent,OBJECT_TYPE_SKINOBJECT_POPUPMENU );
  187. }
  188. else if ( pObject->GetSkinType() == keSpinSkin )
  189. {
  190. HTREEITEM hParent;
  191. hParent = GetTreeCtrl().InsertItem( pObject->GetName(),3,3,m_itemSkinObject );
  192. GetTreeCtrl().SetItemData( hParent,OBJECT_TYPE_SKINOBJECT_SPIN );
  193. }
  194. else if ( pObject->GetSkinType() == keSliderSkin )
  195. {
  196. HTREEITEM hParent;
  197. hParent = GetTreeCtrl().InsertItem( pObject->GetName(),3,3,m_itemSkinObject );
  198. GetTreeCtrl().SetItemData( hParent,OBJECT_TYPE_SKINOBJECT_SLIDER );
  199. }
  200. else if ( pObject->GetSkinType() == keProgressSkin )
  201. {
  202. HTREEITEM hParent;
  203. hParent = GetTreeCtrl().InsertItem( pObject->GetName(),3,3,m_itemSkinObject );
  204. GetTreeCtrl().SetItemData( hParent,OBJECT_TYPE_SKINOBJECT_PROGRESS );
  205. }
  206. else if ( pObject->GetSkinType() == keHeaderSkin )
  207. {
  208. HTREEITEM hParent;
  209. hParent = GetTreeCtrl().InsertItem( pObject->GetName(),3,3,m_itemSkinObject );
  210. GetTreeCtrl().SetItemData( hParent,OBJECT_TYPE_SKINOBJECT_HEADER );
  211. }
  212. else if ( pObject->GetSkinType() == keTabSkin )
  213. {
  214. HTREEITEM hParent;
  215. hParent = GetTreeCtrl().InsertItem( pObject->GetName(),3,3,m_itemSkinObject );
  216. GetTreeCtrl().SetItemData( hParent,OBJECT_TYPE_SKINOBJECT_TAB );
  217. }
  218. else if ( pObject->GetSkinType() == keStatusbarSkin )
  219. {
  220. HTREEITEM hParent;
  221. hParent = GetTreeCtrl().InsertItem( pObject->GetName(),3,3,m_itemSkinObject );
  222. GetTreeCtrl().SetItemData( hParent,OBJECT_TYPE_SKINOBJECT_STATUSBAR );
  223. }
  224. else if ( pObject->GetSkinType() == keToolbarSkin )
  225. {
  226. HTREEITEM hParent;
  227. hParent = GetTreeCtrl().InsertItem( pObject->GetName(),3,3,m_itemSkinObject );
  228. GetTreeCtrl().SetItemData( hParent,OBJECT_TYPE_SKINOBJECT_TOOLBAR );
  229. }
  230. }
  231. GetTreeCtrl().Expand( m_itemSkins,TVE_EXPAND );
  232. GetTreeCtrl().Expand( m_itemImages,TVE_EXPAND );
  233. GetTreeCtrl().Expand( m_itemSkinObject,TVE_EXPAND );
  234. Invalidate( TRUE );
  235. }
  236. void CImageView::OnInitialUpdate()
  237. {
  238. CTreeView::OnInitialUpdate();
  239. m_pImages = GetImages();
  240. }
  241. void CImageView::OnRButtonDown( UINT nFlags , CPoint point )
  242. {
  243. // TODO: Add your message handler code here and/or call default
  244. CMenu menu;
  245. menu.LoadMenu( IDR_MAINFRAME );
  246. CMenu * pSub = menu.GetSubMenu( 3 );
  247. if ( GetDocument()->m_nSelectedType == OBJECT_TYPE_SKINOBJECT_WINDOW )
  248. {
  249. CMenu * pMenu = pSub->GetSubMenu( 1 );
  250. pMenu->EnableMenuItem( ID_WINDOWLESS_WINBUTTONSKIN,MF_BYCOMMAND | MF_ENABLED );
  251. }
  252. else
  253. {
  254. CMenu * pMenu = pSub->GetSubMenu( 1 );
  255. pMenu->EnableMenuItem( ID_WINDOWLESS_WINBUTTONSKIN,MF_BYCOMMAND | MF_DISABLED | MF_GRAYED );
  256. }
  257. CMenu * pMenu = pSub->GetSubMenu( 1 );
  258. pMenu->EnableMenuItem( ID_WINDOWLESS_WINSTATICSKIN,MF_BYCOMMAND | MF_DISABLED | MF_GRAYED );
  259. CPoint pt;
  260. GetCursorPos( &pt );
  261. // pSub->TrackPopupMenuEx(TPM_RIGHTBUTTON|TPM_LEFTALIGN,pt.x,pt.y,this,NULL);
  262. CTreeView::OnRButtonDown( nFlags,point );
  263. }