1. 顔色對話框
CHOOSECOLOR 結構體來設定擷取顔色對話框的相關資訊
成員變量m_cc
m_cc.rgbResult 在IDOK之後儲存的是選擇的顔色RGB值
COLORREF choose_color;
CColorDialog dlg; //建立顔色對話框
dlg.m_cc.Flags|=CC_RGBINIT //以使用者選擇的顔色進行初始化顔色打開對話框
dlg.m_cc.Flags|=CC_FULLOPEN; //全部打開 包括使用者自定義
dlg.m_cc.rgbResult=choose_color; //使用我們上次選擇的顔色進行初始化
if(IDOK==dlg.DoModal()) //建立模态對話框
{
choose_color=dlg.m_cc.rgbResult; //儲存顔色選擇 顔色選擇會反映到 CHOOSECOLOR結構體中的 regResult變量中
}
2. 字型對話框 CFontDialog
CHOOSEFONT 結構體儲存字型設定
LOGFONT 結構體 間接建立字型
DeleteObject 删除與windows GDI 相關的所有存儲 這是資源
CGDIObject是GDI類 判斷類是否與某種資源相關聯我們可以判斷句柄
CFont m_font; //定義CFont對象
CString FontName; //字型名字
CFontDialog dlg; //定義 CFontDialog對象
if(IDOK==dlg.DoModal()) //建立模态對話框
{
if(m_font.m_hObject) //判斷句柄是否存在
m_font.DeleteObject(); //相關資源
m_font.CreateFontIndirect(dlg.m_cf.lpLogFont); //通過CHOOSEFON結構體的LOGFON 成員建立字型
FontName=dlg.m_cf.lpLogFont->lfFaceName; //字型名字
}
Invalidate(); //引起窗體無效 重畫 進入OnDraw函數
4. GetWindowRect 是擷取到螢幕矩形區域的 我們擷取控件矩形要用GetClientRect 來獲得
SCreenToClient() 螢幕坐标轉換到客戶坐标
ClientToSCreen() 客戶坐标轉換成螢幕坐标
5.WM_CTLCOLOR 消息響應 我們可以通過這個消息函數來設定控件的背景顔色 函數必須傳回一個畫刷 這個函數被調用多次 每次對應一個控件
afx_msg HBRUSH OnCtlColor( CDC* pDC, //控件裝置描述
CWnd* pWnd, //指向控件的指針
UINT nCtlColor ); //控件的類型
CWnd::GetDlgCtrlID() //CWnd類的成員函數 通過對象來擷取 一個控件的ID 包括對話框 ID 子視窗 頂層視窗傳回值無效
CDC::SetBkMode(TRANSPARENT)設定背景模式