Click here to Skip to main content
15,886,919 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: Creating a Simple Employee Database using inheritance in c++. Pin
Tarun Jha2-Apr-18 2:32
Tarun Jha2-Apr-18 2:32 
AnswerRe: Creating a Simple Employee Database using inheritance in c++. Pin
Richard MacCutchan2-Apr-18 1:19
mveRichard MacCutchan2-Apr-18 1:19 
GeneralRe: Creating a Simple Employee Database using inheritance in c++. Pin
Tarun Jha2-Apr-18 1:19
Tarun Jha2-Apr-18 1:19 
GeneralRe: Creating a Simple Employee Database using inheritance in c++. Pin
Richard MacCutchan2-Apr-18 1:26
mveRichard MacCutchan2-Apr-18 1:26 
QuestionIs it possible to link a DLL in another DLL and call its functions? Pin
manoharbalu2-Apr-18 0:29
manoharbalu2-Apr-18 0:29 
AnswerRe: Is it possible to link a DLL in another DLL and call its functions? Pin
Richard MacCutchan2-Apr-18 0:59
mveRichard MacCutchan2-Apr-18 0:59 
QuestionMFC DDX_Radio causes debug assertion failure when DoDataExchange is called Pin
janaswamy uday30-Mar-18 2:34
janaswamy uday30-Mar-18 2:34 
AnswerRe: MFC DDX_Radio causes debug assertion failure when DoDataExchange is called Pin
Victor Nijegorodov30-Mar-18 3:34
Victor Nijegorodov30-Mar-18 3:34 
janaswamy uday wrote:
[Q114980: FIX: Disabled DDX Radio Button Causes Infinite Loop | KnowledgeBase Archive]
https://jeffpar.github.io/kbarchive/kb/114/Q114980/

Let me know if any solutions regarding this.

But it was very good written in the article you have mentioned!

Quote:
RESOLUTION


To work around this problem, do one of the following:
  • Arrange the group so that the first radio button is not disabled when any of
    the other controls in the group are enabled.
-or-
  • Call EnableWindow() to enable the radio button before DDX_Radio() is called
    [for example, in DoDataExchange()].
-or-
  • Write your own DDX_Radio() replacement, as shown in the sample code in the
    "MORE INFORMATION" section, below.

STATUS


Microsoft has confirmed this to be a problem in Microsoft Foundation Classes,
versions 2.0 and 2.5. This problem was corrected in MFC version 3.0

MORE INFORMATION


One solution is to write your own DDX_Radio() replacement, which uses
::GetWindow() to iterate through all the controls on the dialog box until it
encounters one with style "WS_GROUP" or a handle of "NULL". The following sample
code is a substitute for DDX_Radio():

Sample Code

//  DDX_MyRadio(), which is a modified DDX_Radio().
//
void AFXAPI DDX_MyRadio(CDataExchange* pDX, int nIDC, int& value)
    // must be first in a group of auto radio buttons
{
   HWND hWndCtrl = pDX->PrepareCtrl(nIDC);
   ASSERT(::GetWindowLong(hWndCtrl, GWL_STYLE) & WS_GROUP);
   ASSERT(::SendMessage(hWndCtrl, WM_GETDLGCODE, 0, 0L) &
DLGC_RADIOBUTTON);
   if( pDX->m_bSaveAndValidate )
      value = -1;     // value if none found
   // walk all children in group
   int iButton = 0;
   do
   {
      if( ::SendMessage(hWndCtrl, WM_GETDLGCODE, 0, 0L) &
DLGC_RADIOBUTTON
)
      {
      // control in group is a radio button
         if( pDX->m_bSaveAndValidate )
         {
            if( ::SendMessage(hWndCtrl, BM_GETCHECK, 0, 0L) != 0 )
            {
               ASSERT(value == -1);    // only set once
               value = iButton;
            }
         }
         else
         {
         // select button
            ::SendMessage( hWndCtrl, BM_SETCHECK, (iButton == value), 0L
);
         }
         iButton++;
      }
      else
      {
         TRACE( "Warning: skipping non-radio button in group.\n" );
      }
      hWndCtrl = ::GetWindow( hWndCtrl, GW_HWNDNEXT );
   } while(hWndCtrl!=NULL &&
!(GetWindowLong(hWndCtrl,GWL_STYLE)&WS_GROUP));
}

Remember to replace the following lines in your CDialog::DoDataExchange():
//{{AFX_DATA_MAP(CMyDialog)
DDX_Radio(pDX, IDC_RADIO1, m_iRadio);
//}}AFX_DATA_MAP

with:
//{{AFX_DATA_MAP(CMyDialog)
DDX_MyRadio(pDX, IDC_RADIO1, m_iRadio);
//}}AFX_DATA_MAP


GeneralRe: MFC DDX_Radio causes debug assertion failure when DoDataExchange is called Pin
janaswamy uday30-Mar-18 4:37
janaswamy uday30-Mar-18 4:37 
GeneralRe: MFC DDX_Radio causes debug assertion failure when DoDataExchange is called Pin
Victor Nijegorodov30-Mar-18 6:29
Victor Nijegorodov30-Mar-18 6:29 
GeneralRe: MFC DDX_Radio causes debug assertion failure when DoDataExchange is called Pin
janaswamy uday30-Mar-18 7:42
janaswamy uday30-Mar-18 7:42 
GeneralRe: MFC DDX_Radio causes debug assertion failure when DoDataExchange is called Pin
Richard Andrew x6430-Mar-18 15:11
professionalRichard Andrew x6430-Mar-18 15:11 
SuggestionRe: MFC DDX_Radio causes debug assertion failure when DoDataExchange is called Pin
Jochen Arndt30-Mar-18 22:17
professionalJochen Arndt30-Mar-18 22:17 
GeneralRe: MFC DDX_Radio causes debug assertion failure when DoDataExchange is called Pin
janaswamy uday1-Apr-18 21:05
janaswamy uday1-Apr-18 21:05 
QuestionHow to map a matrix index to a memory location Pin
Leif Simon Goodwin29-Mar-18 1:26
Leif Simon Goodwin29-Mar-18 1:26 
AnswerRe: How to map a matrix index to a memory location Pin
Jochen Arndt29-Mar-18 2:39
professionalJochen Arndt29-Mar-18 2:39 
GeneralRe: How to map a matrix index to a memory location Pin
Leif Simon Goodwin29-Mar-18 3:12
Leif Simon Goodwin29-Mar-18 3:12 
GeneralRe: How to map a matrix index to a memory location Pin
harold aptroot29-Mar-18 3:44
harold aptroot29-Mar-18 3:44 
AnswerRe: How to map a matrix index to a memory location Pin
Daniel Pfeffer29-Mar-18 5:06
professionalDaniel Pfeffer29-Mar-18 5:06 
QuestionWhat is the best tool to find C++ Memory issues Pin
ptr_Electron29-Mar-18 1:06
ptr_Electron29-Mar-18 1:06 
AnswerRe: What is the best tool to find C++ Memory issues Pin
Leif Simon Goodwin29-Mar-18 1:28
Leif Simon Goodwin29-Mar-18 1:28 
GeneralRe: What is the best tool to find C++ Memory issues Pin
ptr_Electron30-Mar-18 10:12
ptr_Electron30-Mar-18 10:12 
QuestionMemory allocated out side of try and Delete in finally Pin
ptr_Electron28-Mar-18 23:46
ptr_Electron28-Mar-18 23:46 
AnswerRe: Memory allocated out side of try and Delete in finally Pin
Jochen Arndt29-Mar-18 0:17
professionalJochen Arndt29-Mar-18 0:17 
GeneralRe: Memory allocated out side of try and Delete in finally Pin
ptr_Electron29-Mar-18 1:05
ptr_Electron29-Mar-18 1:05 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.