Click here to Skip to main content
Click here to Skip to main content
Add your own
alternative version

DirectUI Window as in XP system folders

, 1 Aug 2004
A control to show a list of possible tasks just as in XP.
directui_demo.zip
Release
todowin.exe
res
bitmap1.bmp
default1.bin
hand.cur
tb2.bmp
todowin.ico
todowinDoc.ico
Toolbar.bmp
directui_demo1.zip
todowin
Release
todowin.exe
res
hand.cur
todowin.ico
todowinDoc.ico
Toolbar.bmp
todowin.clw
todowin.dsp
todowin.dsw
todowin.plg
directui_source.zip
directui_source1.zip
jobwndproj.zip
hand.cur
todowin.ico
todowinDoc.ico
Toolbar.bmp
#if !defined(AFX_WNDJOBS_H__6AE715EA_69E6_4C3A_953C_42319E05E780__INCLUDED_)
#define AFX_WNDJOBS_H__6AE715EA_69E6_4C3A_953C_42319E05E780__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// WndDirectUI.h : Header-Datei
//

class CDirectUIItem: public CObject
{
public:
	void ParseToolbar(CToolBar *pToolbar);
	BOOL HitTest(CPoint point);
	CDirectUIItem(CString strName, UINT uiCommand, int nIconIndex = -1);
	void OnDraw(CDC* pDC, CRect rcItem, CImageList* pImageList, int nStyle);

	UINT    m_uiItemState;
	CString m_strName;
	int     m_nIconIndex;
	UINT    m_uiCommand;

protected:
	CRect m_rcItem;
};

class CDirectUIGroup: public CObject
{
public:
	static COLORREF MakeXPColor(COLORREF cl, double factor = 0.85);
	CDirectUIGroup(CString strName, CImageList* pList, int* pnStyle);
	~CDirectUIGroup();
	void OnDraw(CDC* pDC, CRect rcItem);

public:
	void ToggleExpand();
	BOOL Expand(BOOL bExpand);
	BOOL HitTestButton(CPoint point);
	CDirectUIItem* HitTest(CPoint point);
	void ParseToolbar(CToolBar* pToolbar);
	void CalcHeight();
	void RemoveAllItems();
	int AddItem(CDirectUIItem* pItem);

	CImageList* m_pImageList;
	CString     m_strName;
	int         m_nHeight;
	UINT        m_uiItemState;

protected:
	CTypedPtrList<CObList, CDirectUIItem*> m_lstItems;
	int*        m_pnStyle;
	CRect       m_rcExpandCollapseBtn;
	BOOL        m_bIsCollapsed;
};

/////////////////////////////////////////////////////////////////////////////
// Fenster CWndDirectUI 

class CWndDirectUI : public CWnd
{ 
// Konstruktion
public:
	CWndDirectUI();

	enum Styles {
		styleXP        =       0x01,
		styleOffice    =       0x02,
		styleXPclassic =       0x03
		};

// Attribute
public:

// Operationen
public:

// �berschreibungen
	// Vom Klassen-Assistenten generierte virtuelle Funktions�berschreibungen
	//{{AFX_VIRTUAL(CWndDirectUI)
	//}}AFX_VIRTUAL

// Implementierung
public:
	BOOL Create(const RECT& rect, CWnd* pParentWnd, UINT nID);
	int GetStyle();
	BOOL SetStyle(int nStyle);
	BOOL AddItem(int nGroup, CString strItem, UINT uiCommand);
	BOOL SetToolbarImages(UINT uiToolbar);
	BOOL InitFromMenu(UINT id);
	BOOL ExpandGroup(int nGroup, BOOL bExpand=TRUE);
	BOOL ChangeGroupName(int nGroup, CString strName);
	CString& GetGroupName(int nGroup);
	BOOL RemoveGroup(int nGroup);
	int AddGroup(CString strName);
	void RemoveAll();
	virtual ~CWndDirectUI();

	// Generierte Nachrichtenzuordnungsfunktionen
protected:
	int m_nStyle;
	CImageList m_lstImages;
	HCURSOR    m_hHand;
	CDirectUIItem*  m_pLastHitItem;
	CDirectUIGroup* m_pLastHitGroup;

	CDirectUIGroup* GetGroupByNumber(int nPos);
	void InvalidateIfPossible();
	//{{AFX_MSG(CWndDirectUI)
	afx_msg void OnPaint();
	afx_msg BOOL OnEraseBkgnd(CDC* pDC);
	afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
	afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
	afx_msg void OnMouseMove(UINT nFlags, CPoint point);
	afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
	afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()

	CTypedPtrList<CObList, CDirectUIGroup*> m_lstGroups;
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ f�gt unmittelbar vor der vorhergehenden Zeile zus�tzliche Deklarationen ein.

#endif // AFX_WNDJOBS_H__6AE715EA_69E6_4C3A_953C_42319E05E780__INCLUDED_

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Alexander Bischofberger
Web Developer
Germany Germany
Ok, a few words about me:
 
I started programming on the C64 by the "trial and error" method. Years later my parents got their first PC (Atari PC4, AT 8 MHz) where I started with Turbo Pascal. The next steps led to Turbo Pascal for Windows, Visual C++ 1.52c, and finally Visual C++ 6.
 
I had several chances to code larger projects, e.g.
* stand-alone disc copy station software (Win 3.1) with automatic reboot, disc encryption, ...
* government-used strategic decision system
* MLM marketing tool (www.upline.de)
* maintenance for show planning system and other TV software (www.hse24.de)
 
A lot of code, tipps and help came from this site for my later projects. Thanks again to all who helped me, even if they don't know it. I'm trying to share code (which is worth sharing) so others can get the help I got (and still need) for everyday problems.
 
Well, I think that's enough.

| Advertise | Privacy | Mobile
Web03 | 2.8.140814.1 | Last Updated 2 Aug 2004
Article Copyright 2002 by Alexander Bischofberger
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid