The cleanest (and most simple) way, in my opinion, is to handle windows messages in a standard way: OnLButtonDown() and OnLButtonDoubleClick() and call you specific functionality from there. For example, provide ProcessSingleClick() and ProcessDoubleClick() functions and call them from your OnLButtonDoubleClick() depending on external conditions.