Articles by Nish

Initially, all my articles used to be mirrored both on my web-site as well as on The Code Project, but this became a hassle since I had to update both versions whenever I made changes. I've decided not to maintain a mirror here and instead I will solely be publishing on The Code Project. Way easier that way, and I also get the advantage of the article-forum provided there.

Recently published articles

7 reasons C++ devs will love the VS 14 CTP

The article goes through sevean language and IDE features in the VS 14 CTP 2 that are specific to C++ development

Using the Microsoft Azure Storage Client Library for C++

This is an overview of the Microsoft Azure Storage Client Library for C++ with basic code snippets

CodeProject 10 Million Members Celebration

In the summer of 2013, CodeProject celebrated hitting 10 million members and invited various CodeProject members to host get-togethers around the world. Here are some of the goings-on at those celebrations.

C++ 11 features in Visual C++ 2013 Preview

This is a quick overview of ISO C++ 11 compiler features that are supported in VC++ 2013 Preview

Using Casablanca to consume a REST API

The article walks through using the Casablanca REST API library to consume a REST web service from C++ code

Introduction to using MVVM with Visual C++ 2012

Writing a basic Windows Store Hello World equivalent using VC++ and MVVM

A Coder Interview with Nish Sivakumar

Welcome to our continuing series of CodeProject interviews in which we talk to developers about their backgrounds, projects, interests and pet peeves. In this installment we talk to Nish Sivakumar, a literal CodeProject legend.

Using lambdas - C++ vs. C# vs. C++/CX vs. C++/CLI

A comparative look at lambdas in C++ and C# with focus on the differences and similarities in lambda usage across the languages and their variants.

Visual C++ and WinRT/Metro - Databinding Basics

An introduction to using WinRT databinding with Visual C++

Visual C++ and WinRT/Metro - Some fundamentals

The fundamentals of using Visual C++ to consume and create WinRT objects

The Code Project Forum Analyzer : Find out how much of a life you don't have!

This is an unofficial Code Project application that can analyze forums over a range of posts to retrieve posting statistics for individual members.

Adding data-bindable attributes to C# enums using the dynamic runtime

This article is about a very light-weight enum extension library that takes advantage of dynamic types in .NET 4.0 to provide a simple way to add meta attributes to an enum field.

Resetting a View Model in WPF MVVM applications without code-behind in the view

The core idea behind this code and article is to provide an uncomplicated approach to reset a view-model without having to adjust DataContext references in views.

Code Project Posts Analyzer for Windows Phone 7

This is a WP7 application that will analyze your most recent posts and give you summarized statistics on your forum wide posting split up.

CP Vanity Lite

This is a lightweight version of Luc Pattyn's popular CP Vanity application

PopClient - A POP3 companion to SmtpClient

PopClient is an asynchronous POP3 library with support for SSL and attachments

Code Project Forums : New Posts Monitor

This application monitors for new posts in the Code Project forums.

WPF Tutorial - Part 1 : Transformations

A brief introduction to using transformations with the WPF

Handling a Window's Closed and Closing events in the View-Model

This article discusses an attached behavior that lets you handle the View Window's Closed and Closing events via commands in the View-Model

Setting non-numeric grid row/column sizes in WPF/Silverlight

John, here's a simpler way to do this. This will also handle strings like "3*" which are valid grid length values in Xaml.private RowDefinition MakeRowDefinition(string height){ RowDefinition rowDef = new RowDefinition(); GridLengthConverter converter = new...

EXIF Compare Utility using WPF

The Exif Compare Utility is a WinDiff equivalent for image files that compares the Exif meta-data and displays the differences and similarities. The application is written using WPF and MVVM.

An MVVM friendly approach to adding system menu entries in a WPF application

This article shows you how to add menu items to the system menu and attach command handlers in an MVVM compatible fashion

An explorative peek into generating deterministic primes through a multi-level multi-language tunneling apparatus

This paper is a summary of a research exercise conducted in conjunction by Nish Sivakumar, Professor Cuthbert Calculus, and Glenn Quagmire.

An extensible ExifReader class with customizable tag handlers

An ExifReader class in C# that supports custom formatting and extraction. StyleCop compliant code, with demos for WPF and Windows Forms.

An LCS based diff-ing library in C#

This is an LCS based diff library that was written for the Code Project Lean and Mean diff engine contest

A first look at the Windows Web Services API

The article shows how to interop between a WCF service and a WWS client, and also how to rewrite the WCF service in WWS retaining compatibility with existing WCF clients.

A generic Trictionary class

This article describes a generic Trictionary class derived from Dictionary that allows two values of different types per key

C++/CLI HowTo : Deriving from a C# disposable class

This article walks through the implementation of a C++/CLI class from a disposable C# base.

Using a TypeDescriptionProvider to support dynamic run-time properties

This articles explains how to implement a TypeDescriptionProvider for a class to support multiple object types using a single class type

A look at STL/CLR performance for linear containers

The performance of STL/CLR sequence containers are compared with that of corresponding BCL generic collection classes

Deploying MFC applications via ClickOnce

A step by step tutorial on how to deploy an MFC application via ClickOnce

A data-bound multi-column combobox

An ownerdrawn multi-column combobox class with support for data-binding

Using and extending the Orcas marshal_as library

This article covers basic marshal_as usage, as well as how to extend marshal_as to support additional type conversions

WPF Tutorial - Part 2 : Writing a custom animation class

This article covers how animations can be applied on properties that do not have an associated animation class

C++/CLI in Action - Using interior and pinning pointers

Excerpt from Chapter 4 on interior and pinning pointers

C++/CLI in Action - Instantiating CLI classes

This is an excerpt from Chapter 1 that covers how CLI classes are instantiated, and discusses constructors and assignment operators

C++/CLI in Action - Declaring CLR types

Excerpts from Chapter 1. Topics are (1) Declaring CLR types and (2) Handles: The CLI equivalent to pointers

How to drag a virtual file from your app into Windows Explorer

Shows how to use CFSTR_FILEDESCRIPTOR and CFSTR_FILECONTENTS to perform drag/drop with virtual files

C++/CLI Library classes for interop scenarios

The article takes a brief look at some not so commonly used classes such as auto_handle, lock, and ptr.

A modal dialog that fades the background to gray-scale imitating the XP shutdown screen

DimmerDialog is a .NET class that shows a modal dialog which grays out the rest of the background, just like the Windows XP Shutdown dialog. This can be used when your application needs to show a very important message box or form that requires immediate user attention.

Using the Windows Forms 2.0 MenuStrip and ToolStrip controls to give your MFC applications a new look and feel

This article demonstrates how to use the Windows Forms 2.0 MenuStrip and ToolStrip controls in an MFC SDI application, using C++/CLI, to get the Office 2003 style menu and toolbar

MessageBoxManager - A Windows Forms component that provides enhanced MessageBox functionality

MessageBoxManager is a Windows Forms component that you can drag & drop into a Windows Forms project's main form, and it gives you enhanced message box functionality without forcing you to change your existing calls to any of the MessageBox.Show() overloads

CAutoNativePtr - A managed smart pointer for using native objects in managed code

CAutoNativePtr is a managed template class that acts as a smart pointer, and is handy for using native objects in managed code.

Using WinForms controls in an MFC dialog

This article is a simple introduction to using the CWinFormsControl MFC class to put a Windows Forms control on an MFC dialog.

A rational attempt to substantiate C++/CLI as a first class CLI language

Why the author thinks that C++/CLI has its own unique role to play as a first-class .NET programming language

The coding gentleman's guide to detecting the .NET Framework

A C++ class that will detect and enumerate the active CLR versions on a machine

Shell Tray Info - Arrange your system tray icons

A tool with full source code that enumerates tray icons and allows you to reposition them as well as send mouse messages.

Function pointers and Delegates - Closing the gap!

Explains the usage of the Marshal class methods GetFunctionPointerForDelegate and GetDelegateForFunctionPointer, and compares their performance with the P/Invoke mechanism.

CProcessData : A template class to ease up SendMessage calls across processes

CProcessData is a template class that makes it easy to use data allocated in a different process, and is useful when making inter-process SendMessage/PostMessage calls.

How to accurately detect if an application is theme-enabled?

Describes a function that overcomes the inadequacies of IsAppThemed and IsThemeActive.

MAC Address Changer for Windows XP/2003

A freeware program (with source code) that allows you to change the MAC ID of your network adapter

CNullable : A convenient Nullable equivalent class for C++/CLI

CNullable can be used to represent a value type (or simple native type) such that the type can be nulled. You can also compare it to nullptr using the == and != operators both of which have been overloaded.

StringConvertor : A convertor class for managed-unmanaged string conversions that handles memory de-allocations

A convertor class for managed-unmanaged string conversions that handles memory de-allocations. Caller need not worry about freeing unmanaged memory allocations.

C++/CLI Properties - Syntactic sugar for accessor methods

Looks at the syntax for the declaration and use of properties in C++/CLI

Simulating polymorphic operator overloads with C#

Article shows how to overcome the C# insistence on operator overloads being static and describes a method for simulating polymorphic behavior for operator overloads.

Send mail without specifying an SMTP server

A class derived from CSMTPConnection that queries the MX record for a target domain and uses that to send mail

Using generics in C++/CLI

Introduces generics and compares it with templates

Guide to using Pinning Pointers

Article on the usage and dangers of pinning pointers

An overview of interior pointers in C++/CLI

Tries to explain the syntax, usage and behavior of interior pointers in C++/CLI

Deterministic Destruction in C++/CLI

Looks at how deterministic destruction is possible with C++/CLI

Arrays in C++/CLI

The article exposes the new array syntax available in C++/CLI for the declaration and use of CLI arrays

Function overriding in C++/CLI

Takes a look at new features like explicit overriding, renamed overriding, multiple overriding and sealing a method

A tool to strip zips of unwanted files before submitting to CodeProject

The CPZipStripper tool with source code

Bug when using the java.util.zip classes to write zip files

Describes an issue when writing a binary file into a zip file using the java.util.zip classes

A first look at C++/CLI

A brief look at the new C++/CLI syntax and how it improves over the old MC++ syntax

To new is C++; To malloc is C; To mix them is sin

Article explains the differences between malloc/free and new/delete in a C++ context

A quick guide to using nested repeaters in ASP.NET

Using nested repeaters in ASP.NET with an XML data store

MultiMail 2.0 - Freeware SMTP stress testing tool

This free program can be used to stress test SMTP servers. It also aids anti-Spam tool developers as a useful mail-bombardment tool.

The virtual bool bug

Describes the virtual bool bug that exists in mixed mode Managed C++ programs that access unmanaged classes

Managed Exception Handling using VC++.NET

An introduction to managed exception handling in MC++ programs

Manipulating Windows using messages and simple CBT hooking

Demonstrates techniques using windows messages and hooks, which allow us to automate a windows properties dialog or even custom applications

The singular non-modality of MFC modal dialogs

Explains the pseudo modality of CDialog based modal dialogs and a problem with the CDialog::EndDialog implementation

Changing default icons for folders and drives

Shows how to globally change the icons for folders and drives. Also shows some nifty tricks you might find handy in your applications.

Getting and setting desktop folder names

Gives you copy/paste-able functions to retrieve the localized folder names, and to set/get user-defined folder names for dekstop folders

The Complete Guide to C++ Strings, Part II - String Wrapper Classes

A guide to the string wrapper classes provided by Visual C++ and class libraries

CPopProxyMT - A multi-threaded POP3 proxy skeleton

CPopProxyMT is a skeletal class that wraps a multi-threaded POP3 proxy. You can further modify this class to suite your needs.

CDocument::DoSave revealed

Explains how you can suppress the File-Save-As dialog in a Doc/View app, how to save files to multiple formats, and how DoSave is implemented.

Some handy dialog box tricks, tips and workarounds

Hidden modal dialogs, stealing focus, always on top dialogs, going full-screen, expanding and contracting dialogs, removing task bar icon, context sensitive help and many other useful tips and tricks.

CFormatDriveDialog - A wrapper class for the undocumented SHFormatDrive API function

A wrapper class for SHFormatDrive (XP/2K only). Corrects some errors in KB article Q173688

Casting Basics - Use C++ casts in your VC++.NET programs

Demonstrates and compares the various casting operators available. Also suggests when to use and what to use!

Delay MessageBox with auto-close option

This message box delays its dismissal by disabling the OK button for a delay interval. It also has an optional auto-close feature. There are two versions, one uses a WH_CBT hook and some basic window tricks like sub-classing to achieve its goal. The other one is more MFC-ied.

A statistical analysis of the performance variations of assorted managed and unmanaged languages

This article compares and contrasts the relative performances of various languages like native C++, Visual Basic 6, C#, VB.NET, Managed C++, MC++ and native code mix, ngen'd assemblies etc. using a prime number generation function as a generic benchmark

Window Sizer

A hot-key based program that lets you resize your current window to any size. Useful for web designers and GUI developers as it helps avoid frequent screen-resolution changes.

FontComboBox - a font listing combo box for .NET

A fully owner drawn ComboBox derived class for enumerating and choosing fonts

An editable multi-line listbox for .NET

An owner drawn listbox that supports multi-line word-wrapped text as well as in-place editing.

A newbie's elementary guide to spawning processes

Gives an elementary introduction to the use of ShellExecute/ShellExecuteEx, CreateProcess, WaitForSingleObject. How to bring up the Find window, the Properties window.

ToolTipListBox - a list box with tool tips

A ListBox derived class that shows tool-tips for items that won't fit within the width of the list box

Ordered ListBox

A ListBox derived class that supports internal ordering and re-ordering of items

N-Track : Work-Time tracking system

A work time tracking system that includes a Managed C++ remoting server and MFC clients that use the managed extensions. The application demonstrates how to mix managed and unmanaged code.

Implementing Callback functions using IJW (avoiding DllImport)

Shows how you can call native API functions that require callbacks using IJW, and without the use of DllImport attribute. The technique allows you to pass a delegate as the callback function just as in the MS recommended manner except, I show you how to do this without the ugly DllImport attribute.

Creating draggable windows - SDI and dialogs

Shows how you can create windows that can be dragged around, not just through the title bar, but anywhere within the window body

Introduction to Managed C++

An attempt to get a beginner started on Managed C++

Outlook style GUI - three-way split form

Demonstrates the usage of splitters, treeviews, listviews, panels, toolbars

Screen and Form capture with Managed C++

This is further demonstration of MC++ IJW capabilities

MFC under the hood

Explains the basic MFC program flow including where WinMain and the message loop are hidden

MC++ TCP server talking to MFC & MC++ TCP clients

Basic demonstration of the TcpListener/TcpClient classes.

How to do Synchronous and Asynchronous web downloads

Explains the usage of WebRequest, WebResponse and related classes.

Basic stuff on Files, Directories and Streams

Demonstrates the use of the reader/writer classes as well as the file/directory info classes

Using managed arrays

Declaring and using managed .NET arrays with MC++

Tutorial - Modeless Dialogs with MFC

Some tips/suggestions on using modeless dialogs with MFC

Delegates Tutorial - MC++ and C# - The dual perspective

Introduces and walks you through the use of delegates in .NET. Compares and contrasts the different approaches that MC++ and C# adopt in the use of delegates. With examples in both languages

Implementing custom collection classes with MC++

Tutorial on creating your own collection classes that are enumerable and sortable. Explains in detail the usage of the IEnumerable, IEnumerator, IComparable and IComparer interfaces

Using color gradients as backgrounds in your dialogs and views

Beginner article that shows how you can create horizontal, vertical and diagonal backgrounds. Also tells you what to watch out for, to avoid flickering when doing complicated drawing.

Multi-line InputBox control - MC++

A .NET port of my MFC CFrameWnd derived InputBox class, written using MC++

Tile, center and stretch a bitmap as your MFC dialog background

A small CDialog derived class that helps avoid frequent copy/pasting of the same code, when using a bitmap as dialog background

How to have an Auto-Completing ComboBox in .NET

Shows how to derive a class from ComboBox and add an Auto-Complete feature to it. The example uses Managed C++.

Dynamically loading a DLL - MC++

Shows how you can load an assembly at run time, instantiate a class in that assembly and call methods on the class

Serialization Primer - MC++

A basic introduction to serialization using Managed C++

The MFC unclickable button ported to Managed C++

This article presents a port of the MFC Trick button to .NET using Managed C++ and Windows Forms

Registry handling with .NET

Shows with some code snippets how registry handling is a piece of cake with .NET

CServiceHelper

A simple class to install, uninstall, start, stop, pause, continue Win32 services

Adding a status bar to an MFC dialog

Shows how you can have status bars in your dialog based apps

Drag and Drop between list boxes - Beginner's Tutorial

An introduction to drag and drop in .NET

Getting unsafe with pointers in C#

Introduction to unsafe code

Creating and Resolving shell links

An MC++ class that uses IJW to invoke the IShellLink interface

Using IJW in Managed C++

A basic introduction to using IJW instead of P/Invoke in Managed C++. This is also the first CP article on IJW.

Beginner's Tutorial - Using global hotkeys

Explains how to register, use and unregister hotkeys

Clipboard handling with .NET

An introduction to using the clipboard

.NET port of Joe's AutoRepeat Button class

This ports Joe Newcomer's AutoRepeat Button class to a .NET control

Adding tray icons and context menus

Beginner's Tutorial on adding tray icons and setting context menus

Absolute beginner's introduction to remoting

Introduces .NET remoting and the use of asynchronous callbacks using simple code snippets

Using events for thread synchronization

An introduction to using signaled events for thread synchronization in .NET

Pre-beginner's guide to using a timer

Shows how you can use a timer proc in your windows forms apps

Beginning Winsock Programming - Multithreaded TCP server with client

Explains a multithreaded TCP file server, a custom TCP chat protocol and a custom TCP client

CExpire - A C++ class that implements time and run based restrictions

Shareware authors can use this class to limit the number of runs or the number of days that a program will function

Beginning Winsock Programming - Simple TCP client

A simple TCP client is explained.

Beginning Winsock Programming - Simple TCP server

An introduction to WinSock programming. A simple TCP server is explained.

CFloppyDisk 2.0

A class for reading and writing floppy disk sectors directly [Win 95/98/ME/NT/2K/XP]

Beginner's introductory guide to writing, installing, starting, stopping NT services

Includes a generic skeleton for a simple NT service. Explains how to install, start, and stop the service programmatically.

Keyboard messages/accelerators handling in MFC dialog based applications

This article explains how you can override PreTranslateMessage and ProcessMessageFilter in dialog based apps

OLE DB - First steps

Basic introduction to using OLE DB to insert, update and read records from a database

CInputBox 1.0

A CFrameWnd derived class that provides functionality similar to the VB InputBox function. You don't need a dialog resource to use the class!

CFileTar 1.0 - pack and unpack file archives

A class for packing and unpacking file archives.

CSmtpProxyMT 1.0

An SMTP proxy class with ability to insert signatures to outgoing mails. Does not require MFC.

OLE DB - Bound controls

Shows how you can use data bound controls with OLE DB

Limiting your .NET apps to a single instance

Shows how to use the Mutex class to limit your app to a single instance using a named mutex

Thread Sychronization using monitors

Introduction to using the Monitor class for accessing shared resources from multiple threads

How to pass data to worker threads

Shows how you can pass data to your worker threads

Managed C++ and Windows Forms - Image Viewer

Demonstrates adding menus, showing open-dialog boxes, showing images, scrolling.

Managed C++ and Windows Forms

An introduction to Windows Forms using Managed C++

Events and event handling in C#

An introduction to using events and event handlers in C#

Enums and Structs in C#

Two oft-overlooked value types that C# offers and where they can be used

Introduction to inheritance, polymorphism in C#

An elementary introduction to inheritance, polymorphism in C# using simple code snippets