Codejock Forums Homepage
Forum Home Forum Home > Codejock Products > Visual C++ MFC > Command Bars
  New Posts New Posts RSS Feed - [solved] Ribbon "LoadCommandBars" bug
  FAQ FAQ  Forum Search   Events   Register Register  Login Login

[solved] Ribbon "LoadCommandBars" bug

 Post Reply Post Reply
Author
Message Reverse Sort Order
hiro-ta View Drop Down
Groupie
Groupie


Joined: 11 July 2013
Status: Offline
Points: 61
Post Options Post Options   Thanks (0) Thanks(0)   Quote hiro-ta Quote  Post ReplyReply Direct Link To This Post Topic: [solved] Ribbon "LoadCommandBars" bug
    Posted: 10 February 2017 at 2:50am
Hi, 
Thank you for your response. It works well.
Problem solved.
Back to Top
olebed View Drop Down
Admin Group
Admin Group


Joined: 01 July 2014
Location: Ukraine
Status: Offline
Points: 841
Post Options Post Options   Thanks (0) Thanks(0)   Quote olebed Quote  Post ReplyReply Direct Link To This Post Posted: 07 February 2017 at 4:47am
also similar fix in CXTPControlComboBox::DoPropExchange 
void CXTPControlComboBox::DoPropExchange(CXTPPropExchange* pPX)
{
    CXTPControlPopup::DoPropExchange(pPX);

    PX_Bool(pPX, _T("DropDown"), m_bDropDown, TRUE);
//    PX_DPI_X_Int(pPX, _T("Width"), m_nWidth, 0);
    PX_Enum(pPX, _T("ComboStyle"), m_comboStyle, xtpComboNormal);
...
Back to Top
olebed View Drop Down
Admin Group
Admin Group


Joined: 01 July 2014
Location: Ukraine
Status: Offline
Points: 841
Post Options Post Options   Thanks (0) Thanks(0)   Quote olebed Quote  Post ReplyReply Direct Link To This Post Posted: 07 February 2017 at 4:42am
The same with methods PX_DPI_Size, PX_DPI_Point and PX_DPI_Rect
BOOL AFX_CDECL PX_DPI_Size(CXTPPropExchange* pPX, LPCTSTR pszPropName, SIZE& szValue, SIZE szDefault)
{
    ASSERT_POINTER(pPX, CXTPPropExchange);
    if (!pPX)
        return FALSE;

    BOOL bResult;
    SIZE szTempValue;
    if (pPX->IsLoading())
    {
        bResult = pPX->ExchangeProp(pszPropName, VT_EX_SIZE, &szTempValue, &szDefault);
        if (bResult)
        {
            szValue = XTP_DPI(szTempValue);
        }
    }
    else
    {
        szTempValue = XTP_UNDPI(szValue);
        bResult = pPX->ExchangeProp(pszPropName, VT_EX_SIZE, &szTempValue, &szDefault);
    }

    return bResult;
}

BOOL AFX_CDECL PX_DPI_Point(CXTPPropExchange* pPX, LPCTSTR pszPropName, POINT& ptValue, POINT ptDefault)
{
    ASSERT_POINTER(pPX, CXTPPropExchange);
    ASSERT(sizeof(POINT) == sizeof(SIZE));
    if (!pPX)
        return FALSE;

    BOOL bResult;
    POINT ptTempValue;
    if (pPX->IsLoading())
    {
        bResult = pPX->ExchangeProp(pszPropName, VT_EX_SIZE, &ptTempValue, &ptDefault);
        if (bResult)
        {
            ptValue = XTP_DPI(ptTempValue);
        }
    }
    else
    {
        ptTempValue = XTP_UNDPI(ptValue);
        bResult = pPX->ExchangeProp(pszPropName, VT_EX_SIZE, &ptTempValue, &ptDefault);
    }

    return bResult;
}

BOOL AFX_CDECL PX_DPI_Rect(CXTPPropExchange* pPX, LPCTSTR pszPropName, RECT& rcValue, RECT rcDefault)
{
    ASSERT_POINTER(pPX, CXTPPropExchange);
    if (!pPX)
        return FALSE;

    BOOL bResult;
    RECT rcTempValue;
    if (pPX->IsLoading())
    {
        bResult = pPX->ExchangeProp(pszPropName, VT_EX_RECT, &rcTempValue, &rcDefault);
        if (bResult)
        {
            rcValue = XTP_DPI(rcTempValue);
        }
    }
    else
    {
        if (CW_USEDEFAULT != rcValue.left 
            || CW_USEDEFAULT != rcValue.top 
            || CW_USEDEFAULT != rcValue.right 
            || CW_USEDEFAULT != rcValue.bottom) 
        {
            rcTempValue = XTP_UNDPI(rcValue);
        }
        else
        {
            rcTempValue = rcValue;
        }

        bResult = pPX->ExchangeProp(pszPropName, VT_EX_RECT, &rcTempValue, &rcDefault);
    }

    return bResult;
}
Back to Top
olebed View Drop Down
Admin Group
Admin Group


Joined: 01 July 2014
Location: Ukraine
Status: Offline
Points: 841
Post Options Post Options   Thanks (0) Thanks(0)   Quote olebed Quote  Post ReplyReply Direct Link To This Post Posted: 07 February 2017 at 3:37am
Hello,

I'm glad to inform you about solution.
The changes in file  Source\Common\XTPPropExchange.cpp
BOOL AFX_CDECL PX_DPI_X_Int(CXTPPropExchange* pPX, LPCTSTR pszPropName, int& nValue)
{
    ASSERT_POINTER(pPX, CXTPPropExchange);
    ASSERT_POINTER(&nValue, int);
    if (!pPX)
        return FALSE;

    BOOL bResult;
    int val;
    if (pPX->IsLoading())
    {
        bResult = pPX->ExchangeProp(pszPropName, VT_I4, &val);
        if (bResult)
        {
            nValue = XTP_DPI_X(val);
        }
    }
    else
    {
        val = XTP_UNDPI_X(nValue);
        bResult = pPX->ExchangeProp(pszPropName, VT_I4, &val);
    }

    return bResult;
}

BOOL AFX_CDECL PX_DPI_X_Int(CXTPPropExchange* pPX, LPCTSTR pszPropName, int& nValue,
    int nDefault)
{
    ASSERT_POINTER(pPX, CXTPPropExchange);
    ASSERT_POINTER(&nValue, int);
    if (!pPX)
        return FALSE;

    BOOL bResult;
    int val;
    if (pPX->IsLoading())
    {
        bResult = pPX->ExchangeProp(pszPropName, VT_I4, &val, &nDefault);
        if (bResult)
        {
            nValue = XTP_DPI_X(val);
        }
    }
    else
    {
        val = XTP_UNDPI_X(nValue);
        bResult = pPX->ExchangeProp(pszPropName, VT_I4, &val);
    }

    return bResult;
}

BOOL AFX_CDECL PX_DPI_Y_Int(CXTPPropExchange* pPX, LPCTSTR pszPropName, int& nValue)
{
    ASSERT_POINTER(pPX, CXTPPropExchange);
    ASSERT_POINTER(&nValue, int);
    if (!pPX)
        return FALSE;

    BOOL bResult;
    int val;
    if (pPX->IsLoading())
    {
        bResult = pPX->ExchangeProp(pszPropName, VT_I4, &val);
        if (bResult)
        {
            nValue = XTP_DPI_Y(val);
        }
    }
    else
    {
        val = XTP_UNDPI_Y(nValue);
        bResult = pPX->ExchangeProp(pszPropName, VT_I4, &val);
    }

    return bResult;
}

BOOL AFX_CDECL PX_DPI_Y_Int(CXTPPropExchange* pPX, LPCTSTR pszPropName, int& nValue,
    int nDefault)
{
    ASSERT_POINTER(pPX, CXTPPropExchange);
    ASSERT_POINTER(&nValue, int);
    if (!pPX)
        return FALSE;

    BOOL bResult;
    int val;
    if (pPX->IsLoading())
    {
        bResult = pPX->ExchangeProp(pszPropName, VT_I4, &val, &nDefault);
        if (bResult)
        {
            nValue = XTP_DPI_Y(val);
        }
    }
    else
    {
        val = XTP_UNDPI_Y(nValue);
        bResult = pPX->ExchangeProp(pszPropName, VT_I4, &val);
    }

    return bResult;
}


Fix will be available in next v18.0.

Regards,
 Oleksanrd Lebed
Back to Top
hiro-ta View Drop Down
Groupie
Groupie


Joined: 11 July 2013
Status: Offline
Points: 61
Post Options Post Options   Thanks (0) Thanks(0)   Quote hiro-ta Quote  Post ReplyReply Direct Link To This Post Posted: 06 February 2017 at 3:12am
This problem is occurring among many users. I'm worried.
I want you to fix it soon.
Back to Top
olebed View Drop Down
Admin Group
Admin Group


Joined: 01 July 2014
Location: Ukraine
Status: Offline
Points: 841
Post Options Post Options   Thanks (0) Thanks(0)   Quote olebed Quote  Post ReplyReply Direct Link To This Post Posted: 23 January 2017 at 9:50pm
Hello moser@dsd.at,

If solution is easy I will write it here. We added this task for next release - v18.0.

Regards,
 Oleksandr Lebed
Back to Top
moser@dsd.at View Drop Down
Newbie
Newbie


Joined: 24 October 2007
Status: Offline
Points: 5
Post Options Post Options   Thanks (0) Thanks(0)   Quote moser@dsd.at Quote  Post ReplyReply Direct Link To This Post Posted: 23 January 2017 at 4:23pm
I have the same problem and want to use version 17.3 but we need this issue fixed. Can you tell me when we can expect a solution for this problem ? Is there a workaround without loosing the ability to save customized command bars ?
Back to Top
olebed View Drop Down
Admin Group
Admin Group


Joined: 01 July 2014
Location: Ukraine
Status: Offline
Points: 841
Post Options Post Options   Thanks (0) Thanks(0)   Quote olebed Quote  Post ReplyReply Direct Link To This Post Posted: 29 November 2016 at 12:34pm
Hello,

Thank you to bringing this to our attention. I can reproduce this also with Visual Studio 2015 and 125% DPI. I will try to fix.

Regards,
 Oleksandr Lebed
Back to Top
hiro-ta View Drop Down
Groupie
Groupie


Joined: 11 July 2013
Status: Offline
Points: 61
Post Options Post Options   Thanks (1) Thanks(1)   Quote hiro-ta Quote  Post ReplyReply Direct Link To This Post Posted: 28 November 2016 at 2:13am
Hi,
If you call "LoadCommandBars" or "SaveCommandBars" with the display scaling set to 150%, the ribbon display will be buggy.(See attached image)

●How to reproduce

1. Please set Windows "display scaling" to 150%

2. Open the project "RibbonSample" at VisualStudio 2010.

3. Call "LoadCommandBars" on "CMainFrame::OnCreate()" and Call "SaveCommandBars" on "CMainFrame::OnClose()"
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
       :
LoadCommandBars(_PROFILE_NAME);
       :
}

void CMainFrame::OnClose() 
{
SaveCommandBars(_PROFILE_NAME);
:
}

4.Build and start.

5.Repeat start and exit.

6.Although it is normally displayed at the first startup, it is strange after the second time.(See attached image)

#It might only be reproduced on Japanese version Windows.







Product: Xtreme ToolkitPro (17.3.0) 
Platform: Windows 7/8.1/10 Japanese (x64)
Language: Visual Studio 2010 (C++) 

Back to Top
 Post Reply Post Reply
  Share Topic   

Forum Jump Forum Permissions View Drop Down

Forum Software by Web Wiz Forums® version 12.04
Copyright ©2001-2021 Web Wiz Ltd.

This page was generated in 0.156 seconds.