|
#ifndef __NGDisabledItemComboBox_H__
#define __NGDisabledItemComboBox_H__
// NGDisabledItemComboBox.h : header file
//
// This code is derived from that accompanying the article
// "CComboBox with disabled items" published by Petr Novotny
// (Petr.Novotny@antek.cz) on www.codeproject.com
//
// Modifications for compatibility with dropped lists by Anna-Jayne Metcalfe
// (ajm@sonardyne.co.uk or code@annasplace.me.uk)
//
class CNGDisabledItemComboBox;
/////////////////////////////////////////////////////////////////////////////
// CListBoxInsideComboBox window
class CListBoxInsideComboBox : public CWnd
{
// Construction
public:
CListBoxInsideComboBox(void);
// Attributes
protected:
CNGDisabledItemComboBox* m_pParent;
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CListBoxInsideComboBox)
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CListBoxInsideComboBox(void);
void SetParent(CNGDisabledItemComboBox*);
// Generated message map functions
protected:
//{{AFX_MSG(CListBoxInsideComboBox)
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// CNGDisabledItemComboBox window
class NGLIB_EXT_CLASS CNGDisabledItemComboBox : public CComboBox
{
// Construction
public:
CNGDisabledItemComboBox(void);
// Attributes
protected:
CString m_sSavedText; // saves text between OnSelendok and OnRealSelEndOK calls
CListBoxInsideComboBox m_ListBox;
// Operations
public:
// Overrides
public:
// default implementation uses LSB of item data; override to get other behaviour
virtual BOOL IsItemEnabled(UINT) const;
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CNGDisabledItemComboBox)
public:
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
protected:
virtual void PreSubclassWindow(void);
virtual void PostNcDestroy(void);
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CNGDisabledItemComboBox(void);
// Generated message map functions
protected:
//{{AFX_MSG(CNGDisabledItemComboBox)
afx_msg int OnCharToItem(UINT nChar, CListBox* pListBox, UINT nIndex);
afx_msg void OnSelendok(void);
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
//}}AFX_MSG
afx_msg LRESULT OnCtlColor(WPARAM,LPARAM lParam);
afx_msg LRESULT OnRealSelEndOK(WPARAM,LPARAM);
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
#endif // !__NGDisabledItemComboBox_H__
|
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.
I haven't always written software for a living. When I graduated from Surrey University in 1989, it was with an Electronic Engineering degree, but unfortunately that never really gave me the opportunity to do anything particularly interesting (with the possible exception of designing
Darth Vader's Codpiece * for the UK Army in 1990).
* Also known as the Standard Army Bootswitch. But that's another story...
Since the opportunity arose to lead a software team developing C++ software for
Avionic Test Systems in 1996, I've not looked back. More recently I've been involved in the development of subsea acoustic navigation systems, digital TV broadcast systems, port security/tracking systems, and most recently software development tools with my own company,
Riverblade Ltd.
One of my personal specialities is IDE plug-in development.
ResOrg was my first attempt at a plug-in, but my day to day work is with
Visual Lint, an interactive code analysis tool environment with works within the Visual Studio and Eclipse IDEs or on build servers.
I love lots of things, but particularly music, photography and anything connected with history or engineering. I
despise ignorant, intolerant and obstructive people - and it shows...I can be a bolshy cow if you wind me up the wrong way...
I'm currently based 15 minutes walk from the beach in Bournemouth on the south coast of England. Since I moved here I've grown to love the place - even if it is full of grockles in Summer!