Click here to Skip to main content
15,867,308 members
Articles / Desktop Programming / MFC
Article

WinDiff (or WinMerge), the way you want it!

Rate me:
Please Sign up or sign in to vote.
4.73/5 (19 votes)
20 Jul 20062 min read 231.8K   5.5K   50   42
A shortcut menu extension (and drag drop menu extension) that makes it eaiser to use WinDiff.

Sample Image - wdcmx100.jpg

Preface

It is sad that I have to do this, but here we go anyway... this is not an advertisement or endorsement for WinDiff... so don't get your panties all up in a bunch and start harping on what you like or don't like about WinDiff. This project can be easily tweaked to work with any program that takes two paths as command line arguments. I just picked WinDiff because my boss uses it, it is free, and it worked the way I needed it to.

Introduction

WDCMX is a derivative of CMDCMX, which I wrote way back in 1996. Everyone seems to like CMDCMX, so I figured I would share WDCMX too.

As a code example: WDCMX demonstrates an MFC based shell extension implementation. In addition, uses of GetShortFileName(), BrowseForFolder(), and GetOpenFileName() are included. A cool thing to check out is, how I use the BrowseForFolder callback to make the the tree control pre-select a directory.

As a utility: WDCMX allows you to select files (or folders) from within Explorer and pass them to WinDiff.

Using the Utility

Right-click on file and folder items from within Explorer, and select the 'WinDiff' menu item. The first item to compare is indicated by the item you right-clicked on. The second item is indicated by using the browse dialog presented to you after selecting the "WinDiff" menu item.

Using the Code

The current source archive provides a self-contained solution (WinDiffTool.sln) that includes four projects. From these four projects are built context menu handlers and dragdrop menu handlers that target WinDiff and WinMerge. Select either the Release or Debug targets, and build the solution. The deliverables are built into common "debug" and "release" directories off the base directory. You may want to change these outputs to the locations of the respective diff/merge tools for testing.

Look for GetShortFileName, BrowseForFolder, and GetOpenFileName in wdcmx_menu.cpp to see an example of how they are used.

History

  • Version 1.01

    Posted on July 18, 2006 - MFC is linked static... the MFC redistributables are no longer required.

  • Version 1.00 b

    Posted on September 28, 2004 - Includes the drag and drop component suggested by Jean-Francois Larvoire.

  • Version 1.00

    Posted on September 16, 2004.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Web Developer
United States United States
16yrs of GUI programming experience gained at: (most recent first) BlackBall, Veritas, Seagate Software, Arcada, Stac, Mountain, and Emerald Systems.

Languages/Scripting: C, C++, JAVA, BASIC, JAVASCRIPT, HTML, XML, PHP, and SQL

Tools: MS Visual Studio, MS Visual SourceSafe, CVS, PVCS, Bounds Checker, VMWare, ToDoList, InstallShield, and Office Applications

Libraries and API: RTL, STL, WIN32, MFC, ATL, .NET, ActiveX, DirectX, COM, DCOM, Shell Extensions, and Shell Namespaces

Strengths: Honest, communicative, keen eye for usability, good at estimating workload and completion dates, ready to take on grunt work, team player, experienced working with QA, localization, Tech Pubs, Sales, and Marketing teams.

Comments and Discussions

 
GeneralEnhancements Pin
Lester Espiritu22-Oct-08 6:52
Lester Espiritu22-Oct-08 6:52 
GeneralBrowseForFolder tip works great! Pin
holastefan25-Jul-06 17:34
holastefan25-Jul-06 17:34 
GeneralRe: BrowseForFolder tip works great! Pin
Shaun Harrington26-Jul-06 0:12
Shaun Harrington26-Jul-06 0:12 
JokeWinPORN Pin
AbuseByUnkindPeople24-Jul-06 21:52
AbuseByUnkindPeople24-Jul-06 21:52 
GeneralRe: WinPORN Pin
Shaun Harrington25-Jul-06 3:14
Shaun Harrington25-Jul-06 3:14 
GeneralDragDrop implement for CPropertyPage Pin
cpp_prgmer21-Feb-06 1:02
cpp_prgmer21-Feb-06 1:02 
Hi,

I am sorry if I am submitting a query at the wrong place. I need to implement dragdrop in my CPropertyPage, for which i have added this->DragAcceptFiles(TRUE); in the sheet.
Now it does accept dragged files.

Now I need to read the dropped files for which I am struggling to recieve the event.
I have added the OnDropFiles(HDROP hDropInfo) virtual function to both CPropertySheet as well as CPropertyPage but neither of the functions are being called.

Am I on the right track? Where does the function need to be called? Why does it not work in my case? Could someone guide me on how to implement dragdrop for CWnd, if the above method is wrong, else explain me the call mechanism. Cry | :((
GeneralSend To Pin
zPilott2-Sep-05 18:20
zPilott2-Sep-05 18:20 
GeneralRe: Send To Pin
Anonymous6-Sep-05 5:40
Anonymous6-Sep-05 5:40 
GeneralRe: Send To Pin
zPilott6-Sep-05 7:04
zPilott6-Sep-05 7:04 
Generalthanks Pin
ackka29-Sep-04 5:21
ackka29-Sep-04 5:21 
GeneralRe: thanks Pin
Shaun Harrington29-Sep-04 6:30
Shaun Harrington29-Sep-04 6:30 
GeneralWindiff! Pin
TVman28-Sep-04 22:31
TVman28-Sep-04 22:31 
GeneralRe: Windiff! Pin
Shaun Harrington29-Sep-04 6:29
Shaun Harrington29-Sep-04 6:29 
GeneralDrag Drop Handler... Pin
Shaun Harrington28-Sep-04 16:30
Shaun Harrington28-Sep-04 16:30 
GeneralRe: Drag Drop Handler... Pin
hiforce12-Nov-04 2:47
hiforce12-Nov-04 2:47 
GeneralRe: Drag Drop Handler... Pin
Shaun Harrington15-Nov-04 3:49
Shaun Harrington15-Nov-04 3:49 
GeneralBeyond Compare Pin
Anonymous16-Sep-04 23:30
Anonymous16-Sep-04 23:30 
GeneralRe: Beyond Compare Pin
Shaun Harrington17-Sep-04 5:23
Shaun Harrington17-Sep-04 5:23 
GeneralRe: Beyond Compare Pin
Anonymous19-Sep-04 23:52
Anonymous19-Sep-04 23:52 
GeneralRe: Beyond Compare Pin
Shaun Harrington20-Sep-04 5:37
Shaun Harrington20-Sep-04 5:37 
GeneralRe: Beyond Compare Pin
Shaun Harrington23-Sep-04 9:37
Shaun Harrington23-Sep-04 9:37 
GeneralRe: Beyond Compare Pin
Anonymous26-Sep-04 22:44
Anonymous26-Sep-04 22:44 
GeneralRe: Beyond Compare Pin
Shaun Harrington27-Sep-04 5:18
Shaun Harrington27-Sep-04 5:18 
GeneralWinMerge Pin
Anonymous16-Sep-04 20:41
Anonymous16-Sep-04 20:41 
GeneralRe: WinMerge Pin
Shaun Harrington17-Sep-04 5:13
Shaun Harrington17-Sep-04 5:13 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.