How to draw Focus Border to a specific Tab in MFC TabControl

267 views Asked by At

I was trying to Manually Set Focus border to Tabs selected using SetCurSel() API. But While doing so i also wanted to set the Keyboard Focus(Dotted Border Focus around the Tab as shown in Picture). All I could achieve is Tab selection using SetCurSel().

Focus Border Applied to Tab Control when in Keyboard Focus In my project I don't want the TCN_SELCHANGING to be send, that's why I'm using SetCurSel() instead of SetCurFocus() which will invoke TCN_SELCHANGING or TCN_SELCHANGE notification message.

Currently in my code I am overriding LBUTTON down message to take control of Tab Selection and and I would call SetCurSel() from there.

LRESULT TabEx::WindowProc( UINT uMsg_i, WPARAM wParam_i, LPARAM lParam_i )
{
    switch( uMsg_i )
    {
        case WM_LBUTTONDOWN :
        {
            switch( wParam_i )
            {
                case MK_LBUTTON:
                {
                    int nIndex = GetCurSel( );
                    if()// Logic To determine Which Tab to Select
                    {
                            // Decide to Select nIndex th Tab
                            SetCurSel( nIndex );
                            SendSelChangeNotification( TCN_SELCHANGE );
                            retrun true;
                    
                    }
                    
                    break;
                }
            }
        break;
        }
        .
        .
        .
        .
    }
    .
    .
                            
}

The issue with the above code is it will change the tab selection but No Focus in changed. I cannot use SetCurFocus() here since I don't want to interfere with TCN_SELCHANGING. Is there any direct Message call or function call to Set the Focus to a specific Tab?

0

There are 0 answers