亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 10.3 顏色對話框.txt

?? 網上第一本以TXT格式的VC++深入詳解孫鑫的書.全文全以TXT格式,并每一章節都分了目錄,清晰易讀
?? TXT
字號:
10.3 顏色對話框 
顏色對話框類似于Windows提供的畫圖程序中,選擇【顏色\編輯顏色...】菜單項后出現的對話框,
如圖 10.12所示。利用顏色對話框,可以讓用戶選擇一種顏色,程序隨后按照此顏色創建繪圖所需
的畫筆。
如圖 10.12所示的顏色對話框看起來比較復雜。實際上, MFC為我們提供了一個類: CColorDialog,
可以很方便地創建這樣的一個顏色對話框。該類的派生層次結構如圖 10.13所示。由此,可以知道
顏色對話框也是一個對話框。
" ‘ I 373 
第10

.盯 

;"顏色基本'色咂}



自定義'色電):
廣廣廣「廣廣廣廣
「rrrr廣廣廣 
| 穆.)i;自定義MtM!.仰自~ I 融|純色也】礎ω~.(\!):~
黯 l一旦」事蛐自定增ê.f&I I 
圖 10.12畫圖程序提供的顏色對話框


圖 10.13 CColorDiaJog類的派生層次結構圖 

CColorDialog類的構造方法如下所示: 
CColorDialog(clrlnit = 0 , DWORD dwFlags = 0 , CWnd* pParentWnd = NULL); 
該構造函數具有三個參數,含義分別如下所述: 
. clrlnit 
指定默認的顏色選擇。默認是黑色。 
. dwFlags 
指定一組標記,用來定制顏色對話框的功能和它的外觀。 
. pP缸entWnd指向顏色對話框父窗口或擁有者窗口的指針。為了在 Graphic程序中增加顏色對話框
的顯示,首先為該程序增加一個菜單項,當用
戶選擇此菜單項時,程序將顯示顏色對話框。將這個新菜單項放置在己有的"繪圖"子菜單下,并將
其E設置為IDM_COLOR, Caption設置為顏色。接著為其增加一個命令響應,井選擇 CGraphicView
類對此菜單項命令做出響應。然后在此響應函數中添加顯示顏色對話框的代碼,結果如例 10-12所
示。 
~IJ 10-12 

void CGraphicView: :OnColor() 

CColorDialog dlg ; 
dlg . DoModal() ; 

運行 Graphic程序,選擇【繪圖飛顏色】菜單項,即可以看到出現了一個顏色對話框,并且可以看
到在該對話框左邊顏色塊的黑色塊上有一個黑色的邊框,說明默認選擇的是黑色,這和我們剛才在
畫圖程序中所看到的顏色對話框是一樣的。
下一步要做的事情就是應該將用戶選擇的顏色保存下來。 CColorDialog類有一個 CHOOSECOLOR結構
體類型的成員變量 : ID_cc oCHOOSECOLOR結構體的定義如例 10-13所示。
例 10-13 

typedef struct { DWORD lStructSize; HWND hwndOwner ; 
HWNDh工 nstance ; 
COLORREF rgbResult ; 
COLORREF *lpCustColors; 
DWORD Flags ; 
LPARAM lCustData; 
LPCCHOOKPROC lpfnHook; 
LPCTSTR lpTemplateName; 

} CHOOSECOLOR,女 LPCHOOSECOLOR ;
當用戶單擊顏色對話框上的【 OK】按鈕后,這個結構體中的 rgbResult變量就保存了用戶選擇的顏
色。因此,在程序中通過這個變量就可以獲得用戶選擇的顏色。. 
在Graphic程序中,為了保存用戶選擇的顏色,為 CGraphicView類再增加一個 COLORREF類型的私有
成員變量 : ffi_clr,井在 CGraphicView類的構造函數中將其初始化為紅色,即添加下面這行代碼: 
ffi_clr=RGB(255 , O, O) ; 
然后在 OnColor函數中進行判斷,如果用戶單擊的是【 OK】按鈕,那么就將用戶選擇的顏色保存下
來。修改后的代碼如例 10-14所示。
例 10-14 
戶」在 
void CGraphicView: :OnColor() 
--TIA -l=ld dD14o
ci{ DK αdqd
O(ODroa=o---gM;o 
d a 14 
L 
m_clr=dlg .m_cc . rgbResult; 
當用戶選擇顏色后,隨后進行的繪圖操作都應用此顏色來繪制,也就說應該按此顏色創建繪圖用的
畫筆。所以,修改 CGraphicView類 OnLButtonUp函數中己有的創建畫筆的代碼,將用戶當前選擇的
顏色(即 ffi clr變量)傳遞給 CPen構造函數的第三個參數。另外,還需要修改該函數中繪制點圖形
的代碼,應該用用戶當前選擇的顏色來設置像素點的

"‘I 375 
第10
顏色,修改后的OnLButtonUp代碼如例 10-15所示,其中加灰的代碼為進行了修改的代碼。
例 10-15 

void 	CGraphicView :: OnLButtonUp(UINT nFlags , CPoint poi口t) 
/ / TODO : Add your message handler code here and/ or call default CClientDC dc(this); CPen 
pen(m_nLineStyle,m_nLineWidth, m_clr); dc . SelectObject(&pen) ; CBrush *pBrush=CBrush: : 
FromHandle( (HBRUSH)GetStockObject(NULL_BRUSH)); dc . SelectObject(pBrush); 
switch(m_nOraνI'ype) 
{ 
case 	1: 
dc.SetPixel(point,m_c工r) ; 
break; 

case 	2: 
dc . MoveTo(m-ptOrigin); 
dc . LineTo(point) ; 
break; 

case 	3: 
dc . Rectangle(CRect(m-ptOrigin,point)) ; 
break; 

case 	4: 
dc . Ellipse(CRect(m-ptOrigin , point)) ; 
break; 

} 
CView: :OnLButtonUp(nFlags , point); 

運行Graphic程序,單擊【繪圖飛顏色】菜單項,打開顏色對話框,選擇某種顏色,然后進行繪圖操
作,可以發現這時所繪制的圖形邊框的顏色就是剛才選擇的顏色。
但是當再次打開顏色對話框時,它默認選擇的仍是黑色,而不是剛才選擇的顏色。這時,我們自然
就會想到應該像上面的處理一樣,將用戶選擇的顏色(即 CGraphicView類的 mJlr變量保存的顏色
值〉設置回顏色對話框對象,因此,修改 CGraphicView類的 OnColor函數,添加如例10-16所示代
碼中加灰顯示的那行代碼。 
例10-16 

vo工d 	CGraph工cView: :OnColor ( ) 
CColorDialog dlg; dlg .m_cc .rgbResult=m_clr; 
if(工OOK==dlg .DoModal())
m_clr=dlg.m_cc . rgbResult; 
376 I ~~~ 
VC++深λ詳解
再次運行Graphic程序,先選擇一種顏色,然后進行圖形的繪制,可是當再次打開顏色對話框時,將
會發現結果仍不對,默認選中的顏色仍是黑色。
實際上,如果想要設置顏色對話框初始選擇的顏色,則需要設置該對話框的 CC RGBINIT標記,這個
標記可以在創建顏色對話框時通過其構造函數的第二個參數來設置,也可以在該對話框創建之后,
設置其m cc成員變量的Flags成員。這里,采用后一種方法,修改CGraphicView類的OnColor函數,
添加如例 10-17所示代碼中加灰顯示的那行代碼。 
例 10-17 

void CGraphicView: :OnColor() 
CCol orDialog dlg ; 

dlg.m_cc.Flags=CC_RGB工NIT; 
dlg .m_cc .rgbResult=m_clr; 
if (IDOK==dlg.DoModal()) 

. 
m_clr=dlg.m_cc .rgbResult; 
再次運行Graphic程序,選擇【給圖\顏色】菜單項,出現一個非法操作提示對話框,如圖 10.14所
示。[電a牛二~二itLTJDEbwiibmry j咽··E


Debt啕Asser蝕111 Failed! 
何咱酬:O:\VC++瀕入·理I\CHAPTERI叭,G;-制削減明I\G;-砸在劇@同e: clgclr.cpp Lir晴:73
For時ormat陽、 onhc酬YOtWPI'(9'am can CeI ose eI\眉錮,蝕m faiUe,餌"世回響劇aI C++doan
帽、tatb.on眉目!f1:s.
{防@篤篤 Retryto由戰唱。胃部lPkat陽、〉

旦巳J_旦ι」
圖 10.14非法操作提示對話框

實際上,當在創建CColorDialog對象dlg時,它的數據成員m cc中的F1ags成員已經具有了一些初始
的默認標記。當我們將CC RGBINIT標記直接賦給Flags成員時,就相當于將F1ags成員初始默認的標
記都去掉了。
如果讀者認為這種解釋不太可信,可以構造一個 CString對象,然后利用該對象的 Fonnat函數將初
始的F1ags成員的值格式化,并用 MessageBox顯示輸出,記住輸出的數值。然后在VC++編輯窗口中,
在CC RGBINIT符號上單擊鼠標右鍵,從彈出的快捷菜單中選擇【GoToDe白創onOfCC RGB時π】菜單項,
定位到該符號的定義處 CCOMMDLG.H文件中),可以看到F1ags成員可能取的值 (代碼如例 10-18所
示,并且F1ags的取值可以通過或操作對這些數值進行組合),然后與剛才MessageBox顯示的數值比
對一下,就可以
‘...... 1377 


第 10

知道Flags的取值了。 

11IJ 10-18 

#define CC  RGBINIT  OxOOOOOOOl  
#define CC  FULLOPEN  Ox00000002  
#define CC  PREVENTFULLOPEN  Ox00000004  
#define CC  SHOWHELP  Ox00000008  
#define CC_ENABLEHOOK  Ox00000010  
#define CC  ENABLETEMPLATE  Ox00000020  

#define CC ENABLETEMPLATEHANDLE Ox00000040 #if(WINVER >= Ox0400) #define CC SOL工 DCOLOR 
Ox00000080 #define CC ANYCOLOR Ox00000100 #endif /* WINVER >= Ox0400 */ 
為了進一步驗證 Flags的初始取值,可以根據得到的數值,再換成相應的符號值,井賦給Flags成員,
再運行程序,看看顏色對話框是否能夠正確地顯示就可以驗證這一點了。 
小技巧:在 VC I I開發環境中,同時按下 Ctrl鍵和 Tab鍵,就可以切換到
E 
下一個窗口。 
. 
通過上述分析,可以知道,這里不能給 Flags標記直接賦值,應利用或操作 (1)將 CC RGBINIT標記
與 Flags先前的標記組合起來,即修改后的代碼如下所示 : 
dlg.m_cc.Flags 1= CC_RGBIN工 T;
再次運行 Graphic程序,打開顏色對話框,可以看到初始選擇的就是紅色。接著,選擇其他某種顏
色并關閉該對話框。然后再打開顏色對話框,這時就可以看到現在選中的是先前選擇的顏色了。
另外. Flags成員的取值還有一個常用標記: CC_FULLOPEN.該標記的作用就是讓顏色對話框完全展
開。將上面那條代碼修改為: 
dlg.m_cc.Flags 1= CC_RGBINIT 1 CC_FULLOPEN; 
再次運行 Graphic程序,打開顏色對話框,這時可以看到這個顏色對話框處于完全展開的狀態。 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女视频一区二区| 亚洲欧美偷拍另类a∨色屁股| 成人免费毛片高清视频| 精一区二区三区| 精品一区二区三区在线播放| 免费三级欧美电影| 午夜精品久久久久久久蜜桃app| 亚洲欧美偷拍三级| 一区二区三区欧美日韩| 亚洲午夜精品网| 亚洲电影一区二区| 丝袜脚交一区二区| 麻豆91在线观看| 国产精品一区二区在线播放| 激情综合亚洲精品| 国产精品一二三| thepron国产精品| 91高清视频免费看| 欧美高清www午色夜在线视频| 911精品产国品一二三产区| 欧美日韩一级二级三级| 91精品国产一区二区三区蜜臀| 日韩女优av电影| 91视频com| 欧美三级韩国三级日本三斤| 亚洲欧美自拍偷拍| 自拍偷拍欧美精品| 日韩精品欧美精品| 岛国av在线一区| 丁香婷婷综合激情五月色| av色综合久久天堂av综合| 欧美日韩国产一二三| 欧美tickle裸体挠脚心vk| 国产拍欧美日韩视频二区| 亚洲人成伊人成综合网小说| 亚洲成人激情综合网| 国产一区二区在线看| 色综合色狠狠综合色| 欧美日韩欧美一区二区| 久久综合久久99| 亚洲欧美另类图片小说| 久久99精品网久久| 色噜噜狠狠色综合中国 | 在线视频欧美精品| 日韩一区国产二区欧美三区| 国产农村妇女精品| 日韩二区三区四区| 色综合久久久久综合体 | 久久99精品久久只有精品| 不卡高清视频专区| 日韩欧美成人激情| 亚洲一区二区在线观看视频| 国内精品免费**视频| 色先锋aa成人| 国产精品乱码一区二三区小蝌蚪| 秋霞电影一区二区| 欧美性受xxxx黑人xyx性爽| 国产欧美精品在线观看| 青青国产91久久久久久| 在线免费观看成人短视频| 国产欧美日韩在线看| 狠狠久久亚洲欧美| 欧美久久婷婷综合色| 亚洲精品大片www| 国产.精品.日韩.另类.中文.在线.播放| 日本丰满少妇一区二区三区| 国产精品免费看片| 风流少妇一区二区| www久久精品| 午夜精品福利一区二区三区av| 91精品国产日韩91久久久久久| 精品久久久久久久久久久久久久久久久 | 精品理论电影在线| 美女网站色91| 日韩亚洲欧美在线观看| 石原莉奈在线亚洲二区| 欧美群妇大交群的观看方式| 亚洲福利一区二区三区| 91福利视频久久久久| 一区二区三区小说| 欧美专区日韩专区| 亚洲成人先锋电影| 欧美麻豆精品久久久久久| 亚洲mv大片欧洲mv大片精品| 精品视频1区2区3区| 午夜精品福利一区二区蜜股av| 色又黄又爽网站www久久| 亚洲精品国产第一综合99久久 | 国产精品一品二品| 中文字幕第一区二区| av资源网一区| 一区二区三区四区五区视频在线观看| 色狠狠色狠狠综合| 日韩av二区在线播放| 26uuu另类欧美亚洲曰本| 成人动漫av在线| 亚洲美女少妇撒尿| 欧美一卡2卡三卡4卡5免费| 国产资源精品在线观看| 国产精品视频麻豆| 欧美区在线观看| 国产精品一级在线| 中文字幕一区二区三| 欧美日韩免费高清一区色橹橹| 美女视频网站黄色亚洲| 亚洲欧美怡红院| 91同城在线观看| 亚洲精品久久嫩草网站秘色| 这里只有精品视频在线观看| 日韩和的一区二区| 欧美成人在线直播| 国产丶欧美丶日本不卡视频| 国产午夜亚洲精品理论片色戒 | 欧美色涩在线第一页| 奇米一区二区三区av| 精品福利一二区| 粉嫩高潮美女一区二区三区| 国产精品久久久久久久久免费相片| 粉嫩一区二区三区性色av| 午夜精品福利一区二区三区av | 欧美日韩亚洲高清一区二区| 日韩欧美一级二级三级久久久| 免费观看在线色综合| 久久久久久久久久久久久女国产乱| 国内精品自线一区二区三区视频| 91精品国产综合久久福利软件| www.亚洲在线| 从欧美一区二区三区| 亚洲精品久久7777| 精品国产一区久久| 国产一区二区三区久久悠悠色av| 夜夜嗨av一区二区三区网页| 日韩三级中文字幕| 成人av在线一区二区三区| 亚洲成人av一区二区| 欧美激情在线一区二区三区| 日韩欧美另类在线| 一本色道久久综合亚洲91| 日韩不卡免费视频| 亚洲日本在线天堂| 精品区一区二区| 精品免费99久久| 欧美一区二区二区| 色婷婷综合激情| 日韩国产在线观看| 亚洲三级视频在线观看| 日韩一级黄色片| 色一情一乱一乱一91av| www.欧美日韩国产在线| 午夜电影一区二区| 亚洲男人天堂一区| 久久久久久9999| 色哟哟一区二区| 91小宝寻花一区二区三区| 精品一二三四在线| 亚洲高清免费视频| 国产精品久久久久久福利一牛影视| 欧美一区二区播放| 欧美亚洲丝袜传媒另类| 成人蜜臀av电影| 国产aⅴ精品一区二区三区色成熟| 紧缚奴在线一区二区三区| 粉嫩欧美一区二区三区高清影视| 丝瓜av网站精品一区二区| 亚洲人成7777| 午夜激情综合网| 日韩美女精品在线| 中文字幕日韩av资源站| 26uuuu精品一区二区| 日韩一区二区免费视频| 欧美日韩国产综合一区二区| 91麻豆swag| 欧美另类videos死尸| 日本韩国欧美在线| 色狠狠色噜噜噜综合网| 91在线云播放| 成人三级在线视频| 在线日韩一区二区| 欧美日韩一级黄| 91精品综合久久久久久| 欧美日韩亚洲另类| 久久久不卡网国产精品一区| 久久亚洲综合色| 欧美国产综合一区二区| 国产日韩欧美a| 一区二区不卡在线播放 | 美女mm1313爽爽久久久蜜臀| 婷婷成人激情在线网| 青青草原综合久久大伊人精品| 亚洲成人黄色小说| 国产成人免费视频网站高清观看视频| 国产大陆a不卡| 91婷婷韩国欧美一区二区| 91福利视频在线| 国产欧美一区二区三区在线老狼| 国产免费成人在线视频| 麻豆精品国产91久久久久久| 久久99精品国产麻豆婷婷| 色婷婷狠狠综合| 日韩欧美一区二区免费|