頁面佈局如下
- 使用類:
- CButton:按鈕(包括單選和核取按鈕)
// 獲取某個單選框按鈕是否被選中 int checked = ((CButton *)GetDlgItem(IDC_RADIO_NAME))->GetCheck(); // 設定選中或者非選中 ((CButton *)GetDlgItem(IDC_RADIO_NAME))->SetCheck(TRUE); // 非選中為FALSE
- COLORREF:顏色
// 定義 COLORREF Color = RGB(r int, g int, b int);
- CButton:按鈕(包括單選和核取按鈕)
- 使用方法:
- CWnd::UpdateWindow:更新視窗顯示
- CWnd::ScreenToClient(<CRect>):將矩形區域轉化為客戶端座標
- CWnd::GetDlgItem(IDC_xxx):根據ID獲取某個元件
- CWnd::GetWindowRect(<CRect>):獲取當前元件的矩形區域
定義例項框內的Paint區域
// 視窗類 class CDemoDlg : public CDialog { public: CRect m_example; } // 視窗初始化函式 BOOL CDemoDlg::OnInitDialog() { CDialog::OnInitDialog(); // 獲取例項框大小並賦值給 m_ example this->GetDlgItem(IDC_SECTION_EXAMPLE)->GetWindowRect(&this->m_example); // 將顯示的矩形的座標轉化為客戶端座標 this->ScreenToClient(&this->m_example); // 計算並顯示矩形區域 int border = (m_example.right - m_example.left) / 7; m_example.InflateRect(-border, -border); }
為空間新增變數
為單選框和核取方塊新增事件
// 紅色核取方塊事件 void CDemoDlg::OnCheckRed() { // TODO: Add your control notification handler code here this->m_red = this->IsDlgButtonChecked(IDC_CHECK_RED); this->InvalidateRect(&this->m_example); this->UpdateWindow(); } // 綠色核取方塊事件 void CDemoDlg::OnCheckGreen() { // TODO: Add your control notification handler code here this->m_green = this->IsDlgButtonChecked(IDC_CHECK_GREEN); this->InvalidateRect(&this->m_example); this->UpdateWindow(); } // 藍色核取方塊事件 void CDemoDlg::OnCheckBlue() { // TODO: Add your control notification handler code here this->m_blue = this->IsDlgButtonChecked(IDC_CHECK_BLUE); this->InvalidateRect(&this->m_example); this->UpdateWindow(); } // 亮色單選框事件 void CDemoDlg::OnRadioLight1() { // TODO: Add your control notification handler code here if (this->IsDlgButtonChecked(IDC_RADIO_LIGHT1)) { this->m_light = TRUE; this->InvalidateRect(&this->m_example); this->UpdateWindow(); } } // 暗色單選框事件 void CDemoDlg::OnRadioLight2() { // TODO: Add your control notification handler code here if (this->IsDlgButtonChecked(IDC_RADIO_LIGHT2)) { this->m_light = FALSE; this->InvalidateRect(&this->m_example); this->UpdateWindow(); } }
視窗繪畫事件
void CDemoDlg::OnPaint() { if (IsIconic()) { ... } else { // 繪製矩形區域 if (this->IsDlgButtonChecked(IDC_RADIO_LIGHT1)) this->m_light = TRUE; COLORREF Color = RGB( this->m_red ? (this->m_light == TRUE ? 255 : 128) : 0, this->m_green ? (this->m_light == TRUE ? 255 : 128) : 0, this->m_blue ? (this->m_light == TRUE ? 255 : 128) : 0 ); CBrush Brush(Color); CPaintDC dc(this); dc.FillRect(&this->m_example, &Brush); //呼叫父類方法 CDialog::OnPaint(); } }
本作品採用《CC 協議》,轉載必須註明作者和本文連結