Click here to Skip to main content
15,898,222 members
Articles / Desktop Programming / MFC

A better front end to WinDiff

Rate me:
Please Sign up or sign in to vote.
4.67/5 (26 votes)
18 Oct 2000CPOL 336.4K   10.1K   53  
A GUI front end to a handy utility
#if !defined(AFX_DROPCOMBOBOX_H__115F422E_5CD5_11D1_ABBA_00A0243D1382__INCLUDED_)
#define AFX_DROPCOMBOBOX_H__115F422E_5CD5_11D1_ABBA_00A0243D1382__INCLUDED_

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000

// DropComboBox.h : header file
//
// Autocompleting combo-box (like the URL edit box in netscape)
//
// Written by Chris Maunder (cmaunder@mail.com)
// Copyright (c) 1998.
//
// This code may be used in compiled form in any way you desire. This
// file may be redistributed unmodified by any means PROVIDING it is 
// not sold for profit without the authors written consent, and 
// providing that this notice and the authors name is included. If 
// the source code in  this file is used in any commercial application 
// then acknowledgement must be made to the author of this file 
// (in whatever form you wish).
//
// This file is provided "as is" with no expressed or implied warranty.
// The author accepts no liability if it causes any damage whatsoever.
//
// Expect bugs.
// 
// Please use and enjoy. Please let me know of any bugs/mods/improvements 
// that you have found/implemented and I will fix/incorporate them into this
// file. 
//
//	Drop edit stuff taken from "CDropEdit"
//	Copyright 1997 Chris Losinger
//
//	shortcut expansion code modified from :
//	CShortcut, 1996 Rob Warner
/////////////////////////////////////////////////////////////////////////////

#include <shlobj.h>

/////////////////////////////////////////////////////////////////////////////
// CDropComboBox window

class CDropComboBox : public CComboBox
{
// Construction
public:
	CDropComboBox();

// Attributes
public:
    void AllowFileDrop(BOOL bAllow = TRUE)      { m_bAllowFiles = bAllow;  }
    BOOL AllowingFileDrop()                     { return m_bAllowFiles;    }
    void AllowDirDrop(BOOL bAllow = TRUE)       { m_bAllowDirs = bAllow;   }
    BOOL AllowingDirDrop()                      { return m_bAllowDirs;     }
    void SetMaxFiles(int nMaxFiles)             { m_nMaxFiles = nMaxFiles; }
    int  GetMaxFiles()                          { return m_nMaxFiles;      }
    void SetNoRepeats(BOOL bNoRep)              { m_bNoRepeats = bNoRep;   }
    BOOL GetNoRepeats()                         { return m_bNoRepeats;     }

    void PushString(LPCTSTR szText);

// Operations
public:

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CDropComboBox)
	public:
	virtual BOOL PreTranslateMessage(MSG* pMsg);
	//}}AFX_VIRTUAL

// Implementation
public:
	virtual ~CDropComboBox();

protected:
	CString ExpandShortcut(CString &inFile);
    LONG CheckRepeats(LPCTSTR lpszText);
    void CheckOverflow();
    void RecalcDropWidth();

    int  m_nMaxFiles;
    BOOL m_bNoRepeats;
	BOOL m_bAutoComplete;
	BOOL m_bAllowFiles, m_bAllowDirs;
    BOOL m_bMustUninitOLE;

	// Generated message map functions
protected:
	//{{AFX_MSG(CDropComboBox)
	afx_msg void OnEditUpdate();
    afx_msg LONG OnAddString(UINT wParam, LONG lParam);
    afx_msg LONG OnInsertString(UINT wParam, LONG lParam);
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg void OnDropFiles(HDROP dropInfo);
	//}}AFX_MSG

	DECLARE_MESSAGE_MAP()
};

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

//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_DROPCOMBOBOX_H__115F422E_5CD5_11D1_ABBA_00A0243D1382__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)


Written By
Founder CodeProject
Canada Canada
Chris Maunder is the co-founder of CodeProject and ContentLab.com, and has been a prominent figure in the software development community for nearly 30 years. Hailing from Australia, Chris has a background in Mathematics, Astrophysics, Environmental Engineering and Defence Research. His programming endeavours span everything from FORTRAN on Super Computers, C++/MFC on Windows, through to to high-load .NET web applications and Python AI applications on everything from macOS to a Raspberry Pi. Chris is a full-stack developer who is as comfortable with SQL as he is with CSS.

In the late 1990s, he and his business partner David Cunningham recognized the need for a platform that would facilitate knowledge-sharing among developers, leading to the establishment of CodeProject.com in 1999. Chris's expertise in programming and his passion for fostering a collaborative environment have played a pivotal role in the success of CodeProject.com. Over the years, the website has grown into a vibrant community where programmers worldwide can connect, exchange ideas, and find solutions to coding challenges. Chris is a prolific contributor to the developer community through his articles and tutorials, and his latest passion project, CodeProject.AI.

In addition to his work with CodeProject.com, Chris co-founded ContentLab and DeveloperMedia, two projects focussed on helping companies make their Software Projects a success. Chris's roles included Product Development, Content Creation, Client Satisfaction and Systems Automation.

Comments and Discussions