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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? visual c++ mfc +=+

?? VISUAL C++ MFC 簡(jiǎn)明教程 VISUAL C++ MFC 簡(jiǎn)明教程 VISUAL C++ MFC 簡(jiǎn)明教程
??
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
第三部分:MFC樣式

控制是用來(lái)建立Windows應(yīng)用程序用戶界面的用戶界面對(duì)象。你所見(jiàn)到的大部分Windows應(yīng)用程序和對(duì)話框只不過(guò)是由一些控制所組成的、用來(lái)實(shí)現(xiàn)程序功能的東西。為了建立有效的應(yīng)用程序,你必須完全理解在Windows應(yīng)用程序中應(yīng)該如何合理的使用控制。有六個(gè)基本的控制:CStatic、CButton、CEdit、CList、CComboBox和CScrollBar。另外,Windows 95又增加了15增強(qiáng)了的控制。你需要理解的是那個(gè)控制能做些什么、你應(yīng)該如何控制它的外表和行為以及如何讓控制能響應(yīng)用戶事件。只要掌握了這些,再加上掌握了菜單和對(duì)話框,你就可以建立你所想象的任何Windows應(yīng)用程序。你可以象本教程這樣用程序代碼來(lái)建立控制,也可以使用資源編輯器通過(guò)資源文件來(lái)建立。當(dāng)然,對(duì)話框編輯器更方便些,它對(duì)于已經(jīng)基本掌握了控制的情況下特別有用。
最簡(jiǎn)單的控制是CStatic, 它是用來(lái)顯示靜態(tài)文本的。CStatic類(lèi)沒(méi)有任何數(shù)據(jù)成員,它只有少量的成員函數(shù):構(gòu)造函數(shù)、Create函數(shù)(用于獲取和設(shè)置靜態(tài)控制上的圖標(biāo))等等。它不響應(yīng)用戶事件。因?yàn)樗暮?jiǎn)單性,所以最好把它作為學(xué)習(xí)Windows控制的開(kāi)端。
在本講中,我們從CStatic著手,看一下如何修改和定制控制。在下一講中,我們將學(xué)習(xí)CButton和CScrollBar類(lèi),以理解事件處理的概念。一旦你理解和掌握了所有控制極其類(lèi),你就可以建立完整的應(yīng)用程序了。

基  礎(chǔ)
MFC中的CStatic類(lèi)是用來(lái)顯示靜態(tài)文本信息的。這些信息能夠可以作為純信息(例如,顯示在信息對(duì)話框中的錯(cuò)誤消息), 或作為小的標(biāo)簽等。在Windows應(yīng)用程序的文件打開(kāi)對(duì)話框中,你會(huì)發(fā)現(xiàn)有六個(gè)這樣的標(biāo)簽。
CStatic控制還有幾種其它的顯示格式。你可以通過(guò)修改標(biāo)簽的樣式來(lái)使它表現(xiàn)為矩形、邊框或圖標(biāo)等。
CStatic控制總是作為子窗口的形式出現(xiàn)的。典型情況下,其父窗口是應(yīng)用程序的主窗口或?qū)υ捒颉U缟弦恢v所介紹的,你用兩行代碼就可以建立一個(gè)靜態(tài)控制:
CStatic *cs;	
...	
cs = new CStatic();	
cs->Create("hello world",		
	   WS_CHILD|WS_VISIBLE|SS_CENTER,		
	   CRect(50,80, 150, 150),		
	   this);
這兩行代碼是典型的MFC建立所有控制的代碼。調(diào)用new來(lái)為CStatic類(lèi)的事例分配內(nèi)存,然后調(diào)用類(lèi)的構(gòu)造函數(shù)。構(gòu)造函數(shù)是用來(lái)完成類(lèi)所需要的初始化功能的。Create函數(shù)建立控制并把它放到屏幕上。
Create函數(shù)有五個(gè)參數(shù):
lpszText: 指定了要顯示的文本。
rect:    控制文本區(qū)域的位置、大小和形狀。
pParentWnd: 指明CStatic控制的父窗口。該控制會(huì)出現(xiàn)在其父窗口中,且其位置是相對(duì)于其父窗口的用戶區(qū)域而言的。
nID:    整數(shù)值,表示該控制的標(biāo)識(shí)符。
dwStyle: 最重要的參數(shù)。它控制著控制的外觀和行為。

CStatic樣式
所有的控制都有各種顯示樣式。樣式是在用Create函數(shù)建立控制時(shí)傳遞給它的dwStyle參數(shù)所決定的。對(duì)CStatic有效的樣式簡(jiǎn)介如下:
從CWnd繼承來(lái)的樣式:
* WS_CHILD  CStatic所必須的。
* WS_VISIBLE  表示該控制對(duì)用戶應(yīng)該是可見(jiàn)的。
* WS_DISABLED 表示該控制拒絕接受用戶事件。
* WS_BORDER  控制的文本區(qū)域帶有邊框。
CStatic固有的樣式:
* SS_BLACKFRAME 該控制區(qū)域以矩形邊界顯示。顏色與窗口框架相同。
* SS_BLACKRECT ? 該控制以填充的矩形顯示。顏色與當(dāng)前的窗口框架相同。
* SS_CENTER 文本居中。
* SS_GRAYFRAME  控制以矩形邊框方式顯示。顏色與當(dāng)前桌面相同。
* SS_GRAYRECT  該控制以填充的矩形顯示。顏色與當(dāng)前的桌面相同。
* SS_ICON  控制以圖標(biāo)形式顯示。文本作為圖標(biāo)在資源文件的名稱。rect參數(shù)只控制位置。
* SS_LEFT  文本居左顯示。文字可回繞。
* SS_LEFTNOWORDWRAP 文本居左顯示。多余的文字被剪裁。
* SS_NOPREFIX 表示字符串中的"&"字符不表示為加速前綴。
* SS_RIGHT  文本居右顯示。文字可回繞。
* SS_SIMPLE  只簡(jiǎn)單的顯示一行文本。任何CTLCOLOR信息都被其父窗口忽略。
* SS_USERITEM 用戶定義項(xiàng)。
* SS_WHITEFRAME 控制以矩形邊框方式顯示。顏色與當(dāng)前窗口背景顏色相同。
* SS_WHITERECT  控制以填充矩形方式顯示。顏色與當(dāng)前窗口背景顏色相同。
這些常數(shù)中,“SS”(Static Style)開(kāi)頭的表示只能用于CStatic控制。以“WS”(Window Style)開(kāi)頭的常數(shù)表示可適用于所有窗口,它們定義在CWnd對(duì)象中。CWnd中還有很多以“WS”樣式常數(shù)。你可以在MFC文檔中的CWnd::Create函數(shù)中找到它們。上面的四種是只用于CStatic對(duì)象的。
CStatic對(duì)象至少要帶有兩個(gè)樣式:WS_CHILD和WS_VISIBLE。該控制必須作為另一窗口的子窗口來(lái)建立。如果不使用WS_VISIBLE,則所建立的控制是看不見(jiàn)的。WS_DISABLED控制著標(biāo)簽對(duì)事件的響應(yīng),因?yàn)镃Static不接收鍵盤(pán)或鼠標(biāo)事件,所以使用該項(xiàng)是多余的。
所有的其它樣式選項(xiàng)都是可選的,它們控制著標(biāo)簽的外觀。在CStatic::Create函數(shù)中使用這些控制,可以控制CStatic在屏幕上的顯示。

CStatic文本的外觀
下面的代碼對(duì)于理解CStatic是有幫助的。它與上一講中介紹的代碼類(lèi)似,但是修改了CStatic的建立部分。 
//static1.cpp
#include <afxwin.h>

// Declare the application class
class CTestApp : public CWinApp
{
public:
	virtual BOOL InitInstance();
};

// Create an instance of the application class
CTestApp TestApp;  

// Declare the main window class
class CTestWindow : public CFrameWnd
{ 
	CStatic* cs;
public:
	CTestWindow();
};

// The InitInstance function is called
// once when the application first executes
BOOL CTestApp::InitInstance()
{
	m_pMainWnd = new CTestWindow();
	m_pMainWnd->ShowWindow(m_nCmdShow);
	m_pMainWnd->UpdateWindow();
	return TRUE;
}

// The constructor for the window class
CTestWindow::CTestWindow()
{ 
	CRect r;
	// Create the window itself
	Create(NULL, 
		"CStatic Tests", 
		WS_OVERLAPPEDWINDOW,
		CRect(0,0,200,200));
	
	// Get the size of the client rectangle
	GetClientRect(&r);
	r.InflateRect(-20,-20);
	
	// Create a static label
	cs = new CStatic();
	cs->Create("hello world",
		WS_CHILD|WS_VISIBLE|WS_BORDER|SS_CENTER,
		r,
		this);
}
下面是窗口構(gòu)造函數(shù)加上了行編號(hào):
	CTestWindow::CTestWindow()
	{ 
		CRect r;
		
		// Create the window itself
1		Create(NULL, 
			"CStatic Tests", 
			WS_OVERLAPPEDWINDOW,
			CRect(0,0,200,200));
		// Get the size of the client rectangle
2		GetClientRect(&r);
3		r.InflateRect(-20,-20);
		// Create a static label
4		cs = new CStatic();
5		cs->Create("hello world",
			WS_CHILD|WS_VISIBLE|WS_BORDER|SS_CENTER,
			r,
			this);
	}
首先在單擊1行中調(diào)用CTestWindow::Create函數(shù)。它是CFrameWnd對(duì)象的Create函數(shù),因?yàn)镃TestWindow從CFrameWnd繼承了其行為。所以第一行中的代碼指定了窗口大小應(yīng)該為200×200個(gè)象素,窗口的左上角被初始化在屏幕的0,0位置處。常數(shù)rectDefault可用CRect參數(shù)來(lái)替代。
在第2行,調(diào)用了CTestWindow::GetClientRect,向它傳遞了&r參數(shù)。GetClientRect函數(shù)是從CWnd類(lèi)繼承來(lái)的。變量r是CRect類(lèi)型的,并且在函數(shù)的開(kāi)頭部分被說(shuō)明為局部變量。
理解這段代碼時(shí)可能會(huì)有兩個(gè)問(wèn)題 1) GetClientRect函數(shù)是干什么的? 2) CRect變量是干什么的? 讓我們先回答第一個(gè)問(wèn)題。當(dāng)你查看MFC文檔中的CWnd::GetClientRect函數(shù)時(shí),你會(huì)發(fā)現(xiàn)它返回一CRect類(lèi)型,它包含了指定窗口的用戶區(qū)域矩形。它保存的是參數(shù)的地址&r。該地址指向CRect的位置。CRect類(lèi)型是在MFC中定義的。用它處理矩形是非常方便的。如果你看以下MFC文檔,就會(huì)看到其中定義了30多種處理矩形的成員函數(shù)和操作符。
在我們的情況下,我們要在窗口中間顯示“Hello World”。因此,我們用GetClientRect來(lái)獲取用戶區(qū)域的矩形坐標(biāo)。在第3行中調(diào)用了CRect::InflateRect,同時(shí)還可以增大或減少了矩形的尺寸(參見(jiàn)CRect::DeflateRect)。這里我們對(duì)矩形的各邊減少了20個(gè)象素。如果不這樣的話,標(biāo)簽周?chē)吔缇蜁?huì)超出窗口框架。
實(shí)際上,CStatic是在第4和5行建立的。樣式屬性為居中并有邊框。其大小和位置由CRect參數(shù)r確定的。
通過(guò)修改不同的樣式屬性,你可以理解CStatic的不同形式。例如,下面的代碼包含有對(duì)CTestWindow構(gòu)造函數(shù)進(jìn)行了修改,所產(chǎn)生的控制有個(gè)位移: 
CTestWindow::CTestWindow()
{ 
	CRect r;
	// Create the window itself
	Create(NULL, 
		"CStatic Tests", 
		WS_OVERLAPPEDWINDOW,
		CRect(0,0,200,200));
	
	// Get the size of the client rectangle
	GetClientRect(&r);
	r.InflateRect(-20,-20);
	
	// Create a static label
	cs = new CStatic();
	cs->Create("Now is the time for all good men to \
come to the aid of their country",
		WS_CHILD|WS_VISIBLE|WS_BORDER|SS_CENTER,
		r,
		this);
}
上面的代碼除了所顯示的文本比較長(zhǎng)外沒(méi)有什么不同。運(yùn)行該代碼你就可以看到,CStatic在指定的區(qū)域內(nèi)的文本已經(jīng)回繞了,且沒(méi)一行都是居中的。
如果邊框矩形太小不能包含所有的文本行,則文本會(huì)被剪切以適應(yīng)之。你減小矩形大小或增大字符串長(zhǎng)度就可以看到CStatic的該特性。
在我們所看到的所有代碼中,樣式SS_CENTER是用來(lái)居中文本的。CStatic也允許左對(duì)齊或右對(duì)齊。左對(duì)齊是用SS_LEFT來(lái)替代SS_CENTER屬性。同樣,右對(duì)齊是用SS_RIGHT來(lái)取代之。
SS_LEFTNOWORDWRAP屬性是用來(lái)關(guān)閉文本回繞的。它會(huì)強(qiáng)迫使用左對(duì)齊屬性。

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产黄色91视频| 日本高清无吗v一区| 亚洲色图欧洲色图婷婷| 日韩欧美视频在线| 色婷婷精品久久二区二区蜜臀av| 日韩av一区二区三区| 亚洲人成网站精品片在线观看| 精品精品国产高清a毛片牛牛| 欧美在线视频你懂得| 成人高清av在线| 激情综合网av| 日韩黄色小视频| 亚洲综合一区二区精品导航| 亚洲国产精品成人综合| 精品国产一区二区精华| 欧美日韩精品一区二区天天拍小说| 丁香天五香天堂综合| 美女一区二区久久| 日本不卡视频在线观看| 亚洲一区电影777| 中文字幕一区二区5566日韩| 国产亚洲精品资源在线26u| 日韩欧美电影在线| 日韩一区二区三区精品视频| 欧美视频在线观看一区二区| 91豆麻精品91久久久久久| 91在线国内视频| 99久久久久久| 99精品国产热久久91蜜凸| 高清av一区二区| 国产91精品一区二区麻豆网站| 国产一区二区精品久久| 国内久久精品视频| 国产一区二区三区蝌蚪| 国产精品亚洲一区二区三区妖精 | 欧美刺激脚交jootjob| 3atv一区二区三区| 欧美一级精品在线| 欧美变态口味重另类| 欧美一级理论性理论a| 日韩三级在线观看| 日韩欧美不卡在线观看视频| 日韩欧美中文字幕制服| 久久女同精品一区二区| 久久久久久久av麻豆果冻| 中文字幕久久午夜不卡| 亚洲欧美色综合| 午夜免费久久看| 久色婷婷小香蕉久久| 国产一区二区按摩在线观看| 国产成人综合在线| 91一区二区在线| 欧美视频一二三区| 日韩久久精品一区| 中文字幕精品在线不卡| 亚洲女性喷水在线观看一区| 亚洲综合男人的天堂| 免费黄网站欧美| 国产乱子轮精品视频| 成人av片在线观看| 欧美午夜精品久久久久久超碰| 在线成人av网站| 亚洲精品一区二区三区影院| 国产精品天天摸av网| 亚洲一区二区在线观看视频| 日韩不卡一二三区| 国内精品视频一区二区三区八戒| 东方欧美亚洲色图在线| 欧美在线观看视频一区二区 | 蜜桃视频在线一区| 福利电影一区二区三区| 欧美在线观看视频一区二区| 欧美sm极限捆绑bd| 亚洲精品免费电影| 蜜臀91精品一区二区三区| 成人av资源站| 欧美日本精品一区二区三区| 亚洲精品一区二区三区99| 亚洲三级电影网站| 免费成人在线影院| 91在线一区二区| 欧美草草影院在线视频| 18欧美乱大交hd1984| 美女视频黄a大片欧美| 不卡高清视频专区| 日韩欧美国产系列| 一区二区三区高清在线| 激情久久五月天| 91麻豆.com| 久久亚洲影视婷婷| 亚洲线精品一区二区三区八戒| 国产精品系列在线播放| 欧美日韩精品一区视频| 国产精品人成在线观看免费| 日韩国产欧美在线视频| av激情综合网| 久久综合久久久久88| 亚洲午夜激情网页| 99久久亚洲一区二区三区青草| 欧美一级日韩一级| 亚洲免费高清视频在线| 国产成人免费av在线| 欧美一区二区免费| 一区二区三区在线视频免费 | 自拍偷拍亚洲欧美日韩| 激情小说欧美图片| 91麻豆精品91久久久久久清纯| 成人免费在线观看入口| 国产酒店精品激情| 91精品国产高清一区二区三区| 亚洲欧洲中文日韩久久av乱码| 国产传媒一区在线| 欧美精品一区二区三区久久久| 亚洲成av人片www| 色久综合一二码| 国产精品萝li| 国产成人h网站| 精品sm在线观看| 国模大尺度一区二区三区| 欧美一区二区三区四区高清| 一区二区在线观看视频在线观看| proumb性欧美在线观看| 国产欧美日韩麻豆91| 精品一区二区三区在线播放| 欧美一区二区三区公司| 亚洲国产精品久久不卡毛片| 欧美优质美女网站| 一级日本不卡的影视| 欧美在线|欧美| 亚洲线精品一区二区三区| 欧美系列在线观看| 性欧美大战久久久久久久久| 欧美巨大另类极品videosbest| 亚洲一区二区三区四区不卡 | 久久精品视频一区二区| 国产一区二区三区电影在线观看 | 亚洲电影一级黄| 欧美日韩国产精选| 日韩国产精品久久久| 欧美一区二区大片| 国内精品伊人久久久久av影院 | 亚洲欧洲精品成人久久奇米网| 成人精品视频网站| 国产精品卡一卡二卡三| 91麻豆成人久久精品二区三区| 亚洲欧美日韩中文播放| 欧美日韩在线播| 天天色图综合网| 欧美变态口味重另类| 国产激情一区二区三区四区| 欧美国产精品久久| 91久久线看在观草草青青| 性做久久久久久| 欧美哺乳videos| 成人高清免费在线播放| 一区二区三区欧美亚洲| 欧美一区二区成人6969| 国产美女一区二区| 成人免费小视频| 欧美久久久久免费| 国产精品一二三区| 亚洲激情自拍偷拍| 欧美大片在线观看一区| 国产a久久麻豆| 一级做a爱片久久| 精品久久五月天| fc2成人免费人成在线观看播放| 亚洲精品福利视频网站| 欧美一卡2卡3卡4卡| 国产成a人亚洲| 亚洲综合久久av| 精品国产青草久久久久福利| av中文字幕在线不卡| 亚洲不卡一区二区三区| 国产午夜精品一区二区| 欧洲一区二区三区免费视频| 精品一二线国产| 玉米视频成人免费看| 精品久久人人做人人爱| 欧美制服丝袜第一页| 国产一区二三区好的| 亚洲久草在线视频| 久久欧美一区二区| 欧美日韩在线直播| 成人深夜在线观看| 日本三级亚洲精品| 日韩理论片在线| 26uuu亚洲综合色欧美| 欧美三级在线播放| 成人91在线观看| 激情欧美一区二区| 天天综合色天天综合| 亚洲欧洲成人精品av97| 欧美精品一区二区三| 欧美性猛片aaaaaaa做受| 国产凹凸在线观看一区二区| 日本欧美加勒比视频| 一区二区三区资源| 中文一区二区完整视频在线观看| 欧美精品日韩一本|