WinDiff: Graphical File Comparison Tool

Click to open or copy the files for the WinDiff sample.

The WinDiff tool takes two files or two directories and does a byte-for-byte file comparison. It then displays the results in a scrollable window, lining up the identical parts, and marking with color the parts of the files that differ. This application can be useful for doing source-level management of code.

This multithread tool allows you to interact with the window while the file comparisons occur in the background.

Building SDK Samples

This sample uses the following keywords:

_fullpath; _getcwd; _lclose; _llseek; _lread; _ltoa; _lwrite; _mkdir; abortdlg; abortdoc; abortproc; aboutbox; abs; absorbanyblanks; alloc; ansilowerbuff; attachthreadinput; barclick; bardrawposition; barpaint; barwndproc; beginpaint; bottomright; busyerror; charnext; charprev; checkdlgbutton; checkmenuitem; checkradiobutton; ci_compare; ci_copytext; ci_makecomposite; ci_onesection; closehandle; compitem_delete; compitem_discardsections; compitem_freefilename; compitem_getcomposite; compitem_getfilename; compitem_getleftfile; compitem_getleftsections; compitem_getrightfile; compitem_getrightsections; compitem_getstate; compitem_gettext_result; compitem_gettext_tag; compitem_new; complist_args; complist_copyfiles; complist_delete; complist_dirdialog; complist_dodlg_copyfiles; complist_dodlg_dir; complist_dodlg_savelist; complist_filedialog; complist_freeroot_left; complist_freeroot_right; complist_getitems; complist_getroot_left; complist_getroot_right; complist_match; complist_new; complist_open; complist_querytime; complist_savelist; copyfile; createdialog; createfile; createfontindirect; createpen; createprocess; createsolidbrush; createthread; createtools; createwindow; ctree_create; ctree_delete; ctree_find; ctree_getcount; ctree_update; defwindowproc; deletecriticalsection; deletedc; deletefile; deleteobject; deletetools; destroywindow; dialogbox; dir_adddirect; dir_addfile; dir_buildlist; dir_cleardirect; dir_closefile; dir_copy; dir_delete; dir_dirinit; dir_endcopy; dir_fileinit; dir_finalelem; dir_findnextfile; dir_firstitem; dir_freefullname; dir_freeopenname; dir_freerelname; dir_freeroot_item; dir_freeroot_list; dir_getfilesize; dir_getfullname; dir_getopenname; dir_getpathsize; dir_getrelname; dir_getroot_item; dir_getroot_list; dir_isfile; dir_isvaliddir; dir_isvalidfile; dir_nextitem; dir_openfile; dir_scan; dir_startcopy; dispatchmessage; dllmain; do_editfile; do_editthread; do_getdata; do_gethdr; do_getprops; dodlg_stringin; doprint; doresize; drawfocusrect; drawlink; drawsection; drawtext; enablemenuitem; enablewindow; enddialog; enddoc; endpage; endpaint; entercriticalsection; exit; exitprocess; exttextout; file_delete; file_discardlines; file_getdiritem; file_getlinelist; file_new; file_readlines; file_reset; fillrect; findclose; findendofmatched; findendofunmatched; findfirstfile; findfirstwithlink; findnextchange; findnextfile; findprevchange; free; freeprocinstance; gbit_alloc; gbit_findfree; gbit_free; gbit_init; gbit_set; gdate_daytodmy; gdate_dmytoday; gdate_monthdays; gdate_weekday; gdi_isleap; get_scroll_opcode; get_scroll_pos; get_wm_command_cmd; get_wm_command_hwnd; get_wm_command_id; getclientrect; getcurrentthreadid; getdc; getdesktopwindow; getdevicecaps; getdlgitemtext; getfileattributes; getfilesize; getfiletime; getfocus; getkeystate; getmenu; getmessage; getmodulehandle; getopenfilename; getparent; getprofileint; getprofilestring; getstockobject; gettempfilename; gettemppath; gettextextent; gettextextentpoint; gettextmetrics; gettickcount; getwindowlong; getwindowplacement; globalalloc; globalfree; globalhandle; globallock; globalunlock; gmem_free; gmem_freeall; gmem_get; gmem_init; gmem_panic; gtab_alloclinedata; gtab_append; gtab_boxcell; gtab_buildtable; gtab_calcwidths; gtab_changesel; gtab_createtools; gtab_dblclick; gtab_delcr; gtab_deltable; gtab_deltools; gtab_dohscroll; gtab_dovscroll; gtab_drawvertline; gtab_enter; gtab_freelinedata; gtab_hsep; gtab_init; gtab_invallines; gtab_invertsel; gtab_isborder; gtab_key; gtab_linetorow; gtab_move; gtab_msg_hscroll; gtab_msg_vscroll; gtab_newsize; gtab_paint; gtab_paintcell; gtab_press; gtab_print; gtab_printhead; gtab_printjob; gtab_printpage; gtab_printsetup; gtab_prtwidths; gtab_release; gtab_rowtoline; gtab_select; gtab_selhome; gtab_sendtq; gtab_setrects; gtab_setsize; gtab_showsel; gtab_showsel_middle; gtab_trackcol; gtab_updatecontig; gtab_updateline; gtab_vsep; gtab_wndproc; gtab_xtocol; gtab_ytoline; hash_string; initapplication; initbarclass; initdc; initializecriticalsection; initinstance; invalidaterect; invertrect; isbusy; isdbcsleadbyte; isdialogmessage; leavecriticalsection; line_compare; line_delete; line_gethashcode; line_getlinenr; line_getlink; line_gettabbedlength; line_gettext; line_isblank; line_link; line_new; line_reset; lineto; list_addafter; list_addbefore; list_addfirst; list_addlast; list_card; list_check; list_clear; list_create; list_delete; list_deletebackwards; list_deletefirst; list_deleteforwards; list_deletelast; list_destroy; list_dump; list_enter_crit; list_first; list_init; list_insertlistafter; list_insertlistbefore; list_isempty; list_isok; list_itemlength; list_join; list_last; list_leave_crit; list_makeok; list_newafter; list_newbefore; list_newfirst; list_newlast; list_next; list_prev; list_recover; list_show; list_splitafter; list_splitbefore; list_traverse; loadaccelerators; loadcursor; loadicon; loadmenu; loadrcstring; loadrcstring2; loadstring; localalloc; localfree; localhandle; locallock; localunlock; lowerrect; lstrcat; lstrcmp; lstrcmpi; lstrcpy; lstrlen; mainwndproc; makelong; makeprocinstance; max; memcpy; memset; messagebox; min; move; moveback; movetoex; movewindow; muldiv; my_mbschr; my_mbsncmp; my_mbsncpy; my_mbsrchr; nextnonignorable; old_strncpy; openfile; outputdebugstring; parseargs; peekmessage; poll; postmessage; postquitmessage; printdlg; ptinrect; raiserect; readfile_delete; readfile_new; readfile_next; rectangle; redrawwindow; registerclass; registerwindowmessage; releasecapture; releasedc; rgb; scrollwindow; section_delete; section_deletelist; section_expandanchor; section_getcorrespond; section_getfirstline; section_getlastline; section_getleftbasenr; section_getlinecount; section_getlink; section_getrightbasenr; section_getstate; section_makecomposite; section_makectree; section_makelist; section_match; section_matchlists; section_new; section_setleftbasenr; section_setrightbasenr; section_setstate; section_takesection; selectobject; senddlgitemmessage; sendmessage; setabortproc; setbkcolor; setbusy; setbuttontext; setcapture; setcursor; setdlgitemtext; setfileattributes; setfiletime; setfocus; setnames; setnotbusy; setrop2; setscrollpos; setscrollrange; setselection; setstatus; settextcolor; setwindowlong; setwindowplacement; setwindowtext; showwindow; startdoc; startpage; statetocolour; statusadditem; statusalloc; statusbuttondown; statusbuttonup; statuscalcheight; statuscalcwidth; statuscreate; statuscreatetools; statusdeletetools; statusgetitem; statusheight; statusinit; statuspaint; statusresize; statuswndproc; strchr; stringinput; strncmp; strncpy; strrchr; svrclose; switch; switchlists; tableserver; terminatethread; to_blks; toexpand; tomoved; tooutline; topleft; translateaccelerator; translatemessage; tree_addafter; tree_create; tree_delete; tree_delitem; tree_find; tree_getitem; tree_newitem; tree_search; tree_update; updatewindow; utils_comppath; utils_isblank; view_changediffoptions; view_changeviewoptions; view_close; view_delete; view_expand; view_expand_item; view_findchange; view_findrow; view_freemappings; view_getcomplist; view_getcurrenttag; view_getitem; view_getlinenr_left; view_getlinenr_right; view_getrowcount; view_getstate; view_gettext; view_getwidth; view_isexpanded; view_new; view_newitem; view_outline; view_outline_opt; view_setcomplist; viewenter; viewleave; waitforsingleobject; wd_copy; wd_dirdialog; wd_initial; wdenter; wdleave; windiff_ui; windiff_usage; winmain; writeprofileint; writeprofilestring; wsprintf; zeromemory