Click here to Skip to main content
13,832,668 members

C / C++ / MFC

 
GeneralRe: Creating a Simple Employee Database using inheritance in c++. Pin
Tarun Jha2-Apr-18 3:32
memberTarun Jha2-Apr-18 3:32 
AnswerRe: Creating a Simple Employee Database using inheritance in c++. Pin
Richard MacCutchan2-Apr-18 2:19
protectorRichard MacCutchan2-Apr-18 2:19 
GeneralRe: Creating a Simple Employee Database using inheritance in c++. Pin
Tarun Jha2-Apr-18 2:19
memberTarun Jha2-Apr-18 2:19 
GeneralRe: Creating a Simple Employee Database using inheritance in c++. Pin
Richard MacCutchan2-Apr-18 2:26
protectorRichard MacCutchan2-Apr-18 2:26 
QuestionIs it possible to link a DLL in another DLL and call its functions? Pin
manoharbalu2-Apr-18 1:29
membermanoharbalu2-Apr-18 1:29 
AnswerRe: Is it possible to link a DLL in another DLL and call its functions? Pin
Richard MacCutchan2-Apr-18 1:59
protectorRichard MacCutchan2-Apr-18 1:59 
QuestionMFC DDX_Radio causes debug assertion failure when DoDataExchange is called Pin
janaswamy uday30-Mar-18 3:34
memberjanaswamy uday30-Mar-18 3:34 
AnswerRe: MFC DDX_Radio causes debug assertion failure when DoDataExchange is called Pin
Victor Nijegorodov30-Mar-18 4:34
memberVictor Nijegorodov30-Mar-18 4: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 5:37
memberjanaswamy uday30-Mar-18 5:37 
GeneralRe: MFC DDX_Radio causes debug assertion failure when DoDataExchange is called Pin
Victor Nijegorodov30-Mar-18 7:29
memberVictor Nijegorodov30-Mar-18 7:29 
GeneralRe: MFC DDX_Radio causes debug assertion failure when DoDataExchange is called Pin
janaswamy uday30-Mar-18 8:42
memberjanaswamy uday30-Mar-18 8:42 
GeneralRe: MFC DDX_Radio causes debug assertion failure when DoDataExchange is called Pin
Richard Andrew x6430-Mar-18 16:11
professionalRichard Andrew x6430-Mar-18 16:11 
SuggestionRe: MFC DDX_Radio causes debug assertion failure when DoDataExchange is called Pin
Jochen Arndt30-Mar-18 23:17
mveJochen Arndt30-Mar-18 23:17 
GeneralRe: MFC DDX_Radio causes debug assertion failure when DoDataExchange is called Pin
janaswamy uday1-Apr-18 22:05
memberjanaswamy uday1-Apr-18 22:05 
QuestionHow to map a matrix index to a memory location Pin
Leif Simon Goodwin29-Mar-18 2:26
memberLeif Simon Goodwin29-Mar-18 2:26 
AnswerRe: How to map a matrix index to a memory location Pin
Jochen Arndt29-Mar-18 3:39
mveJochen Arndt29-Mar-18 3:39 
GeneralRe: How to map a matrix index to a memory location Pin
Leif Simon Goodwin29-Mar-18 4:12
memberLeif Simon Goodwin29-Mar-18 4:12 
GeneralRe: How to map a matrix index to a memory location Pin
harold aptroot29-Mar-18 4:44
memberharold aptroot29-Mar-18 4:44 
AnswerRe: How to map a matrix index to a memory location Pin
Daniel Pfeffer29-Mar-18 6:06
professionalDaniel Pfeffer29-Mar-18 6:06 
QuestionWhat is the best tool to find C++ Memory issues Pin
ptr_Electron29-Mar-18 2:06
memberptr_Electron29-Mar-18 2:06 
AnswerRe: What is the best tool to find C++ Memory issues Pin
Leif Simon Goodwin29-Mar-18 2:28
memberLeif Simon Goodwin29-Mar-18 2:28 
GeneralRe: What is the best tool to find C++ Memory issues Pin
ptr_Electron30-Mar-18 11:12
memberptr_Electron30-Mar-18 11:12 
QuestionMemory allocated out side of try and Delete in finally Pin
ptr_Electron29-Mar-18 0:46
memberptr_Electron29-Mar-18 0:46 
AnswerRe: Memory allocated out side of try and Delete in finally Pin
Jochen Arndt29-Mar-18 1:17
mveJochen Arndt29-Mar-18 1:17 
GeneralRe: Memory allocated out side of try and Delete in finally Pin
ptr_Electron29-Mar-18 2:05
memberptr_Electron29-Mar-18 2: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.


Advertise | Privacy | Cookies | Terms of Service
Web06 | 2.8.190114.1 | Last Updated 20 Jan 2019
Copyright © CodeProject, 1999-2019
All Rights Reserved.
Layout: fixed | fluid