Handling ESC and Return Keys While Editing a Label | CodeGuru

Handling ESC and Return Keys While Editing a Label

When I first implemented the tree view control and tried editing a label, the only way I could finish editing was to click elsewhere. MFC has been designed in such a way that the parent window gets a chance at the messages using the PreTranslateMessage() virtual function. If the parent window is a CDialog or […]

Written By
CodeGuru Staff
CodeGuru Staff
Aug 6, 1998
1 minute read
CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More

When I first implemented the tree view control and tried editing a label, the only way I could finish editing was to click elsewhere. MFC has been designed in such a way that the parent window gets a chance at the messages using the PreTranslateMessage() virtual function. If the parent window is a CDialog or a CFormView, the ESC and the return key are handled by the parent and does not reach the control. To allow our control to process some important messages we need to override the PreTranslateMessage() function. In our code below, we also also allow the control key combinations to go through to the control. This allows copy, cut and paste using the control key combinations.

BOOL CTreeCtrlX::PreTranslateMessage(MSG* pMsg)
{
   if( pMsg->message == WM_KEYDOWN )
   {
      // When an item is being edited make sure the edit control
      // receives certain important key strokes
      if( GetEditControl()
         (pMsg->wParam == VK_RETURN
         || pMsg->wParam == VK_DELETE
         || pMsg->wParam == VK_ESCAPE
         || GetKeyState( VK_CONTROL)
      )
   )
   {
      ::TranslateMessage(pMsg);
      ::DispatchMessage(pMsg);
      return TRUE;    // DO NOT process further
    }
}
return CTreeCtrl::PreTranslateMessage(pMsg);
CodeGuru Logo

CodeGuru covers topics related to Microsoft-related software development, mobile development, database management, and web application programming. In addition to tutorials and how-tos that teach programmers how to code in Microsoft-related languages and frameworks like C# and .Net, we also publish articles on software development tools, the latest in developer news, and advice for project managers. Cloud services such as Microsoft Azure and database options including SQL Server and MSSQL are also frequently covered.

Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.