建立一個畫圖界面
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2QvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2LcZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TM5UDMzkDM5EDOxUDM2EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
首先将控件都綁定控件變量
然後在初始化函數BOOL CCRdemoDlg::OnInitDialog()中添加初始化資訊CheckRadioButton(IDC_RD_RECT,IDC_RD_ROUND,IDC_RD_ROUND)
函數功能:該函數給一組單選按鈕中的一個指定按鈕加上選中标志,并且清除組中其他按鈕的選中标志。 函數原型:BOOL CheckRadioButton(HWND hDlg, int nlDFirstButton, int nlDLastBUtton, int nlDCheckButton); 參數: hDlg:指向包含單選按鈕的對話框的句柄。 nlDFirstButton:指定組中第1個 單選按鈕的辨別符。 nlDLastButton:指定組中最後一個單選按鈕的辨別符。 nlDCheckButton:指出要選中的那個單選按鈕的辨別符。 傳回值:如果函數執行成功,傳回值非零;如果失敗,則傳回零。若想擷取更多 錯誤資訊,請調用GetLastError函數。 然後需要用到對話框屬性中消息函數的擦除背景消息函數
BOOL CCRdemoDlg::OnEraseBkgnd(CDC* pDC) //擦除背景函數
{
// TODO: 在此添加消息處理程式代碼和/或調用預設值
BOOL bRet= CDialogEx::OnEraseBkgnd(pDC);
int nRed,nGreen,nBlue;
nRed=m_chk_red.GetCheck()?255:0;
nGreen=m_chk_green.GetCheck()?255:0;
nBlue=m_chk_blue.GetCheck()?255:0;
COLORREF crFore=RGB(nRed,nGreen,nBlue); //組合成新的顔色,用來畫圖的前景色
CBrush brush; //建立刷子,實心,然後用這個刷子來畫圖
brush.CreateSolidBrush(crFore);
CBrush *pOldBrush=pDC->SelectObject(&brush); //先把刷子選入dc,dc裡原來舊的刷子用一個指針保留下來
RECT rc={50,20,150,120};
if(m_rd_rect.GetCheck())
{
pDC->Rectangle(&rc); //畫矩形
}
else
pDC->Ellipse(&rc);
pDC->SelectObject(pOldBrush); //把舊的畫刷放回去
return bRet;
}
對藍色選擇框的程式,添加事件( 單擊):
void CCRdemoDlg::OnBnClickedChkBlue()
{
// TODO: 在此添加控件通知處理程式代碼
Invalidate();//失效,重新繪制對話框,失效以後就擦除背景,也就是執行上面的函數
}
其他選擇框分别調用OnBnClickedChkBlue();函數即可