Как вернуть значение Int в ON_BN_CLICKED - PullRequest
0 голосов
/ 18 июня 2020
ON_BN_CLICKED(IDOK, OnHolNameOK)
ON_BN_CLICKED(ID_BTN_HOLCAL_NEW, OnBtnHolcalNew)

Как вернуть int или bool в on_bn_clicked function?

BOOL CAddHolCalDlg::OnBtnHolcalNew() 
SINT4 CAddHolCalDlg::OnBtnHolcalDelete() 


BOOL CAddHolCalDlg::OnBtnHolcalNew() 
{
    DBUG_ENTER("CAddHolCalDlg::OnBtnHolcalNew");

    SINT4 nCount = 0;

    CCreateHolCalDlg dlgCreateHolCal;

    if(IDOK == dlgCreateHolCal.DoModal())           
    {
        this->UpdateList();
        nCount = m_lbHolCal.GetItemCount();
        m_lbHolCal.SetItemState((nCount-1), LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
        m_lbHolCal.EnsureVisible((nCount-1), FALSE);
        this->UpdateStatusForDeleteBtn();
        DBUG_RETURN(TRUE);
    }
    else
       DBUG_RETURN(FALSE);
}

SINT4 CAddHolCalDlg::OnBtnHolcalDelete() 
{   
    DBUG_ENTER("CAddHolCalDlg::OnBtnHolcalDelete");

    SINT4 nItem;
    SINT4 nState = 0;
    CString pszCode;

    nItem = m_lbHolCal.GetNextItem( -1, LVNI_SELECTED );
    if(nItem >= 0)
    {
        pszCode = m_lbHolCal.GetItemText(nItem, 1); 
    }

    if (nState = DeleteCalendar((LPTSTR)(LPCTSTR)pszCode))
    {
        errReport(SEVERITY_FATAL, CMOI_DELETE_HOLIDAY_CALENDAR_ERROR, nState);
        GiveErrorDialog(this->m_hWnd, IDS_ERR_HOLCAL_DELETE,
            "", "", IDS_DLG_HC_DELETE, 
            CMOI_DELETE_HOLIDAY_CALENDAR_ERROR,
            nState);
        CDialog::OnCancel();
        DBUG_RETURN(nState);
    }
    this->UpdateList();

    DBUG_RETURN(SUCCESS);
}


BEGIN_MESSAGE_MAP(CAddHolCalDlg, CDialog)
    ON_BN_CLICKED(ID_BTN_HOLCAL_NEW, OnBtnHolcalNew)
    ON_BN_CLICKED(ID_BTN_HOLCAL_OPEN, OnBtnHolcalOpen)
    ON_BN_CLICKED(ID_BTN_HOLCAL_DELETE, OnBtnHolcalDelete)
    ON_NOTIFY(NM_CLICK, ID_LIST_HOLCAL, OnListItemClick)
    ON_NOTIFY(NM_RCLICK, ID_LIST_HOLCAL, OnListItemRightClick)

SINT4 CAddHolCalDlg :: OnBtnHolcalDelete () в этой функции мы возвращаем состояние из функции. BOOL CAddHolCalDlg :: OnBtnHolcalNew () Здесь мы захватываем возвращаемое значение из функции.

Приведенный выше код используется для работы в Visual Studio 6.0. Эта версия кода также выполнялась на сайте клиента.

Пожалуйста, помогите мне. Как этого добиться в Visual Studio 2019?

1 Ответ

0 голосов
/ 18 июня 2020

Как указано в документе Microsoft , обработчики кнопок - это void функции.

Поэтому довольно неясно, как Visual Studio 6 смогла скомпилировать это без ошибок.

Также неясно, что именно делает DBUG_RETURN, поскольку вы не предоставили всю необходимую информацию. Кажется, что это c журналы диагностики.

В любом случае ваши обработчики кнопок должны выглядеть так:

void CAddHolCalDlg::OnBtnHolcalNew() 
{
    DBUG_ENTER("CAddHolCalDlg::OnBtnHolcalNew");

    SINT4 nCount = 0;

    CCreateHolCalDlg dlgCreateHolCal;

    if(IDOK == dlgCreateHolCal.DoModal())           
    {
        this->UpdateList();
        nCount = m_lbHolCal.GetItemCount();
        m_lbHolCal.SetItemState((nCount-1), LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
        m_lbHolCal.EnsureVisible((nCount-1), FALSE);
        this->UpdateStatusForDeleteBtn();
        // add your logging stuff here
        return;
    }
    else
    {
        // add your logging stuff here
       return;
    }
}
...