Disable にされたラジオボタンでアサート

Disable にされたラジオボタンで,そのボタンが選択状態(値がそのボタン)の時,DDX を使用していると Debug 版でアサートされる.
Release 版では,うまく動作する様に見える場合もあるが,他の値に変更されない場合もある.
UpdateData(FALSE) のみを使用している場合は OK.
 
//*******************************************************************************
// 関数名 :指定されたコントロールの無効化
// 作成日 :’09/11/11
// 変更日 :’10/01/26 ラジオボタンで選択されている時,アサートされたバグの対応
//*******************************************************************************
inline
BOOL MDlgMod::DisableControlID (CWnd* wnd,const CUIntArray& disCmmdIDs,const BOOL isDisable)
{
    BOOL isEnable = (isDisable) ? FALSE : TRUE ;
    if (wnd == NULL)   { return FALSE ;  }
    for (INT_PTR index=0 ; index<disCmmdIDs.GetSize() ; index++) {
        UINT id = disCmmdIDs[index] ;
        if (id == 0)  { continue ; }
        CWnd* ctrl = wnd->GetDlgItem(id) ;
        if (ctrl == NULL) { continue ; }
        if (!isEnable) {
            if (_AfxIsRadioButton(ctrl->GetSafeHwnd())) {     // CtlPPG.cpp
                if (Button_GetCheck(ctrl->GetSafeHwnd())) {  // WindowsX.h
                    continue ;
                    }
                }
            }
        ctrl->EnableWindow(isEnable) ;
        }
    return TRUE ;
    }
この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ

  • Categories:


コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください