We recommend using Visual Studio 2017
This documentation is archived and is not being maintained.


Creates a solid rectangle for the system caret and claims ownership of the caret.

void CreateSolidCaret(
   int nWidth,
   int nHeight 


Specifies the width of the caret (in logical units). If this parameter is 0, the width is set to the system-defined window-border width.


Specifies the height of the caret (in logical units). If this parameter is 0, the height is set to the system-defined window-border height.

The caret shape can be a line or block.

The parameters nWidth and nHeight specify the caret's width and height (in logical units); the exact width and height (in pixels) depend on the mapping mode.

The system's window-border width or height can be retrieved by the GetSystemMetrics Windows function with the SM_CXBORDER and SM_CYBORDER indexes. Using the window-border width or height ensures that the caret will be visible on a high-resolution display.

The CreateSolidCaret member function automatically destroys the previous caret shape, if any, regardless of which window owns the caret. Once created, the caret is initially hidden. To show the caret, the ShowCaret member function must be called.

The system caret is a shared resource. CWnd should create a caret only when it has the input focus or is active. It should destroy the caret before it loses the input focus or becomes inactive.

// Create a 5x10 solid caret in the edit control.
void CMyDlg::OnCreateSolidCaret()
   m_MyEdit.CreateSolidCaret(5, 10);

Header: afxwin.h