Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SSW_8_11.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
5.22 Mб
Скачать

Radio buttons

The radio button provides the choice selection between exclusive options. That element consists of text field (text label) and small round button. If button is empty, the option, linked to the button isn’t set. Windows supports two type of radio buttons program and automatic. For automatic buttons all actions are executed by system. So, these buttons are usually used in real programs. The states of radio buttons are usually set by global variables in the program. The initialization of radio buttons is provided in OnInitDialog() function.

Listing 3.5 OnCB1 handler - the BN_CLICKED processing for the first check

afx_msg void CSampleDialog::OnInitDialog()

{CButton *rb1ptr = (CButton *)GetDlgItem(IDD_RB1);

CButton *rb2ptr = (CButton *)GetDlgItem(IDD_RB2);

rb1ptr -> SetCheck(rbStatus1);

rb2ptr -> SetCheck(rbStatus2);

return TRUE;

}

Scrolling bar usage in MFC-programs

There are two types of scrolling bar. First type elements are aggregate parts of any windows (including dialog windows), they also are called window scrolling bar or standard scrolling bars. The second type elements exist independently and therefore that have name of independent scrolling bars.

The elements of first type are described by CWnd class, the elements of second type by CScrollBar.

To use standard scrolling bars in the window, its need to give options WS_YSCROLL or (and) WS_XSCROLL as a component of the window style in the Create() function call. So, if options are set, the showing of scrolling bars is automatic.

Independent scrolling bar is special object with it’s own kind of resource, so it should be set specially in the resource editor and need for separate object declaration in the class.

The scrolling bars aren’t generate WM_COMMAND message, but they send or WM_VSCROLL or WM_HSCROLL message. These messages are processed by OnVScroll() and OnHScroll() handlers.

Their prototypes:

Afx_msg void cWnd::OnVScroll( uint nSbCode, uint nPos, cScrollBar* pScrollBar ); afx_msg void cWnd::OnHScroll( uint nSbCode, uint nPos, cScrollBar* pScrollBar );

Here we have parameters

nSBCode   Specifies a scroll-bar code that indicates the user's scrolling request. This parameter can be one of the following:

SB_BOTTOM   Scroll to bottom.

SB_ENDSCROLL   End scroll.

SB_LINEDOWN   Scroll one line down.

SB_LINEUP   Scroll one line up.

SB_PAGEDOWN   Scroll one page down.

SB_PAGEUP   Scroll one page up.

SB_THUMBPOSITION   Scroll to the absolute position. The current position is provided in nPos.

SB_THUMBTRACK   Drag scroll box to specified position. The current position is provided in nPos.

SB_TOP   Scroll to top.

nPos   Contains the current scroll-box position if the scroll-bar code is SB_THUMBPOSITION or SB_THUMBTRACK; otherwise not used. Depending on the initial scroll range, nPos may be negative and should be cast to an int if necessary.

pScrollBar   If the scroll message came from a scroll-bar control, contains a pointer to the control. If the user clicked a window's scroll bar, this parameter is NULL. The pointer may be temporary and should not be stored for later use.

Functions and typically is used by applications that give some feedback while the scroll box is being dragged.

If OnVScroll scrolls the contents of the CWnd object, it must also reset the position of the scroll box with the member function.

Before scrollbar using, there should be set it’s range. That range defines the number of fixed positions of scroll bar control. Default value is 0-100 range. SetScrollRange() sets minimum and maximum position values for the given scroll bar. It can also be used to hide or show standard scroll bars.

void CWnd::SetScrollRange( int nBar, int nMinPos, int nMaxPos, BOOL bRedraw = TRUE );

Parameters:

nBar   Specifies the scroll bar to be set. This parameter can be either of the following values:

SB_HORZ   Sets the range of the horizontal scroll bar of the window.

SB_VERT   Sets the range of the vertical scroll bar of the window.

nMinPos   Specifies the minimum scrolling position.

nMaxPos   Specifies the maximum scrolling position.

bRedraw   Specifies whether the scroll bar should be redrawn to reflect the change. If bRedraw is TRUE, the scroll bar is redrawn; if FALSE, the scroll bar is not redrawn.

For independent scroll bar there is such function:

void CScrollBar::SetScrollRange( int nMinPos, int nMaxPos, BOOL bRedraw = TRUE );

The scroll bar position is set by SetScrollPos(). It’s prototype:

int CScrollBar::SetScrollPos( int nPos, BOOL bRedraw = TRUE );

To get scroll bar position you need use next function:

int CScrollBar::GetScrollPos( ) const;

Return Value specifies the current position of the scroll box if successful; otherwise 0.

There was presented the functions of CscrollBar class, the same functions arein the CWnd class.

To work with scroll bars in the program you need make the following actions in the program:

a) To include the scroll bar declaration to the resource file (f.e. to the dialog window);

b) To include the scroll bar handlers to the CMainWin class:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]