Microsoft KB Archive/138663

= PRB: GetCheckedRadioButton Returns ID Outside Button Group =

Article ID: 138663

Article Last Modified on 11/21/2006

-

APPLIES TO

 Microsoft Foundation Class Library 4.2, when used with:  Microsoft Visual C++ 1.5 Professional Edition

 Microsoft Visual C++ 1.51

 Microsoft Visual C++ 1.52 Professional Edition

 Microsoft Visual C++ 2.0 Professional Edition</li></ul>

 Microsoft Visual C++ 2.1</li></ul>

 Microsoft Visual C++ 2.2</li></ul>

 Microsoft Visual C++ 4.0 Standard Edition</li></ul> </li></ul>

-

<div class="notice_section">

This article was previously published under Q138663

<div class="symptoms_section">

SYMPTOMS
Usually, the intention while using the CWnd::GetCheckedRadioButton function is to retrieve, from a group of option buttons, the ID of the one that is selected. However, if it is not used correctly, this function may return the ID of a selected button that lies outside a button group.

<div class="cause_section">

CAUSE
The CWnd::GetCheckedRadioButton function takes two arguments:

nIDFirstButton -- the ID of the first option button.

nIDLastButton -- the ID of the last option button in a group.

It returns the ID of the selected option button in a group of option buttons if both the following conditions hold:


 * The IDs of the option buttons in the group are consecutive -and-


 * The IDs are in ascending order

If these conditions are not met, the function may either fail (return 0) or return the ID of a control that is not in the option button group.

<div class="status_section">

STATUS
This behavior is by design.

<div class="moreinformation_section">

MORE INFORMATION
The GetCheckedRadioButton function is designed as a counter-part to the CheckRadioButton Windows API function prototyped here: void CheckRadioButton(HWND hwndDlg,                          int nIDFirstButton,                           int nIDLastButton,                           int nIDCheckButton) This function clears the selection from all buttons with IDs in the range given by nIDFirstButton and nIDLastButton except the one whose ID is given by nIDCheckButton.

The implementation of the CWnd::GetCheckedRadioButton function works along the same lines. It cycles through each ID in the range given by nIDFirstButton and nIDLastButton querying each to find out which one is in a selected state. It returns as soon as it finds a selected option.

Additional query words: 2.00 1.50 2.50 2.51 2.52 1.52b 3.00 2.10 3.10 2.20 3.20 4.00

Keywords: kbbutton kbhowto kbprb KB138663

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.