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

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

?? visual c++編程技巧.txt

?? Visual C++編程技巧.txt Visual C++編程技巧.txt
?? TXT
?? 第 1 頁 / 共 5 頁
字號:

//Unselect brush out of device context . 

pDC—>SelectObject (pOldBrush ); 

// Return nonzero to half fruther processing . 

return TRUE; 

} 

23、如何改變窗口標題 

調用CWnd : : SetWindowText可以改變任何窗口(包括控件)的標題。 

//Set title for application's main frame window . 

AfxGetMainWnd ( ) —> SetWindowText (_T("Application title") ); 

//Set title for View's MDI child frame window . 

GetParentFrame ( ) —> SetWindowText ("_T ("MDI Child Frame new title") ); 

//Set title for dialog's push button control. 

GetDigitem (IDC_BUTTON) —> SetWindowText (_T ("Button new title ") ); 

如果需要經常修改窗口的標題(注:控件也是窗口),應該考慮使用半文檔化 

的函數AfxSetWindowText。該函數在AFXPRIV.H中說明,在WINUTIL.CPP中實現,在 

聯機幫助中找不到它,它在AFXPRIV.H中半文檔化, 在以后發行的MFC中將文檔化。 

AfxSetWindowText的實現如下: 

voik AFXAPI AfxSetWindowText (HWND hWndCtrl , LPCTSTR IpszNew ) 

{ 

itn nNewLen= Istrlen (Ipaznew); 

TCHAR szOld [256]; 

//fast check to see if text really changes (reduces flash in the controls ) 

if (nNewLen >_contof (szOld) || 

: : GetWindowText (hWndCrtl , szOld , _countof (szOld) !=nNewLen || 

Istrcmp (szOld , IpszNew )! = 0 

{ 

//change it 

: : SetWindowText (hWndCtrl , IpszNew ); 

} 

} 

24、如何防止主框窗口在其說明中顯示活動的文檔名 

創建主框窗口和MDI子窗口進通常具有FWS_ADDTOTITLE風格位, 如果不希望在 

說明中自動添加文檔名, 必須禁止該風格位, 可以使用ClassWizard重置 

CWnd: : PreCreateWindow并關閉FWS_ADDTOTITLE風格。 

BOOL CMainFrame : : PreCreateWindow (CREATESTRUCT&cs) 

{ 

//Turn off FWS_ADDTOTITLE in main frame . 

cs.styel & = ~FWS_ADDTOTITLE ;  

return CMDIFrameWnd : : PreCreateWindow (cs ); 

} 

關閉MDI子窗口的FWS _ADDTOTITLE風格將創建一個具有空標題的窗口,可以調 

用CWnd: : SetWindowText來設置標題。記住自己設置標題時要遵循接口風格指南。 


--------------------------------------------------------------------------------


Visual C++編程技巧之四   

25、如何獲取有關窗口正在處理的當前消息的信息 

26、如何創建一個不規則形狀的窗口 

27、如何在代碼中獲取工具條和狀態條的指針 

28、如何使能和禁止工具條的工具提示 

29、如何設置工具條標題 

30、如何創建和使用無模式對話框 

31、如何在對話框中顯示一個位圖 

32、如何改變對話或窗體視窗的背景顏色 

  

25、如何獲取有關窗口正在處理的當前消息的信息 

調用CWnd: : GetCurrentMessage可以獲取一個MSG指針。例如,可以使用 

ClassWizard將幾個菜單項處理程序映射到一個函數中,然后調用GetCurrentMessage 

來確定所選中的菜單項。 

viod CMainFrame : : OnCommmonMenuHandler ( ) 

{ 

//Display selected menu item in debug window . 

TRACE ("Menu item %u was selected . \n" , 

GetCruuentMessage ( ) —> wParam ); 

} 

26、如何創建一個不規則形狀的窗口 

可以使用新的SDK函數SetWindowRgn。該函數將繪畫和鼠標消息限定在窗口的一 

個指定的區域,實際上使窗口成為指定的不規則形狀。 

使用AppWizard創建一個基于對的應用程序并使用資源編輯器從主對話資源中刪 

除所在的缺省控件、標題以及邊界。 

給對話類增加一個CRgn數據成員,以后要使用該數據成員建立窗口區域。 

Class CRoundDlg : public CDialog 

{ 


private : 

Crgn m_rgn : // window region 


} ; 

修改OnInitDialog函數建立一個橢圓區域并調用SetWindowRgn將該區域分配給 

窗口: 

BOOL CRoundDlg : : OnInitDialog ( ) 

{ 

CDialog : : OnInitDialog ( ) ; 

//Get size of dialog . 

CRect rcDialog ; 

GetClientRect (rcDialog ); 

// Create region and assign to window . 

m_rgn . CreateEllipticRgn (0 , 0 , rcDialog.Width ( ) , rcDialog .Height ( ) ); 

SetWindowRgn (GetSafeHwnd ( ) , (HRGN) m_ rgn , TRUE ); 

return TRUE ; 

} 

通過建立區域和調用SetWindowRgn,已經建立一個不規則形狀的窗口,下面的例 

子程序是修改OnPaint函數使窗口形狀看起來象一個球形體。 

voik CRoundDlg : : OnPaint ( ) 

{ 

CPaintDC de (this) ; // device context for painting . 

//draw ellipse with out any border 

dc. SelecStockObject (NULL_PEN); 

//get the RGB colour components of the sphere color 

COLORREF color= RGB( 0 , 0 , 255); 

BYTE byRed =GetRValue (color); 

BYTE byGreen = GetGValue (color); 

BYTE byBlue = GetBValue (color); 

// get the size of the view window 

Crect rect ; 

GetClientRect (rect); 

// get minimun number of units 

int nUnits =min (rect.right , rect.bottom ); 

//calculate he horiaontal and vertical step size 

float fltStepHorz = (float) rect.right /nUnits ; 

float fltStepVert = (float) rect.bottom /nUnits ; 

int nEllipse = nUnits/3; // calculate how many to draw 

int nIndex ; // current ellipse that is being draw 

CBrush brush ; // bursh used for ellipse fill color 

CBrush *pBrushOld; // previous brush that was selected into dc 

//draw ellipse , gradually moving towards upper-right corner 

for (nIndex = 0 ; nIndes < + nEllipse ; nIndes ++) 

{ 

//creat solid brush 

brush . CreatSolidBrush (RGB ( ( (nIndex *byRed ) /nEllipse ). 

( ( nIndex * byGreen ) /nEllipse ), ( (nIndex * byBlue) /nEllipse ) ) ); 

//select brush into dc 

pBrushOld= dc .SelectObject (&brhsh); 

//draw ellipse 

dc .Ellipse ( (int) fltStepHorz * 2, (int) fltStepVert * nIndex , 

rect. right -( (int) fltStepHorz * nIndex )+ 1, 

rect . bottom -( (int) fltStepVert * (nIndex *2) ) +1) ; 

//delete the brush 

brush.DelecteObject ( ); 

} 

} 

最后,處理WM_NCHITTEST消息,使當擊打窗口的任何位置時能移動窗口。 

UINT CRoundDlg : : OnNchitTest (Cpoint point ) 

{ 

//Let user move window by clickign anywhere on the window . 

UINT nHitTest = CDialog : : OnNcHitTest (point) ; 

rerurn (nHitTest = = HTCLIENT)? HTCAPTION: nHitTest ; 

} 

27、如何在代碼中獲取工具條和狀態條的指針 

缺省時, 工作框創建狀態條和工具條時將它們作為主框窗口的子窗口,狀態條 

有一個AFX_IDW_STATUS_BAR標識符,工具條有一個AFX_IDW_TOOLBAR標識符,下例說 

明了如何通過一起調用CWnd: : GetDescendantWindow和AfxGetMainWnd來獲取這些 

子窗口的指針: 

//Get pointer to status bar . 

CStatusBar * pStatusBar = 

(CStatusBar *) AfxGetMainWnd ( ) —> GetDescendantWindow 

(AFX_IDW_STUTUS_BAR); 

//Get pointer to toolbar . 

CToolBar * pToolBar = 

(CToolBar * ) AfxGetMainWnd ( ) —> GetDescendantWindow (AFX_IDW_TOOLBAR); 

28、如何使能和禁止工具條的工具提示 

如果設置了CBRS_TOOLTIPS風格位,工具條將顯示工具提示,要使能或者禁止 

工具提示,需要設置或者清除該風格位。下例通過調用CControlBar : : GetBarStyle 

和CControlBar : : SetBarStyle建立一個完成此功能的成員函數: 

void CMainFrame : : EnableToolTips ( BOOL bDisplayTips ) 

{ 

ASSERT_VALID (m_wndToolBar); 

DWORD dwStyle = m _wndToolBar.GetBarStyle ( ) ; 

if (bDisplayTips) 

dwStyle |=CBRS_TOOLTIPS ; 

else 

dwStyle & = ~ CBRS_TOOLTIPS ; 

m_wndToolBar.SetBarStyle (dwStyle ); 

} 

29、如何設置工具條標題 

工具條是一個窗口,所以可以在調用CWnd : : SetWindowText來設置標題,例子如下: 

int CMainFrame : : OnCreate (LPCREATESTRUCT lpCreateStruct ) 

{ 


// Set the caption of the toolbar . 

m_wndToolBar.SetWindowText (_T "Standdard"); 

30、如何創建和使用無模式對話框 

MFC將模式和無模式對話封裝在同一個類中,但是使用無模式對話需要幾 

個對話需要幾個額處的步驟。首先,使用資源編輯器建立對話資源并使用 

ClassWizard創建一個CDialog的派生類。模式和無模式對話的中止是不一樣的: 

模式對話通過調用CDialog : : EndDialog 來中止,無模式對話則是調用 

CWnd: : DestroyWindow來中止的,函數CDialog : : OnOK和CDialog : : OnCancel 

調用EndDialog ,所以需要調用DestroyWindow并重置無模式對話的函數。 

void CSampleDialog : : OnOK ( ) 

{ 

// Retrieve and validate dialog data . 

if (! UpdateData (TRUE) ) 

{ 

// the UpdateData rountine will set focus to correct item 

TRACEO (" UpdateData failed during dialog termination .\n") ; 

return ; 

} 

//Call DestroyWindow instead of EndDialog . 

DestroyWindow ( ) ; 

} 

void CSampleDialog : : OnCancel ( ) 

{ 

//Call DestroyWindow instead of EndDialog . 

DestroyWindow ( ) ; 

} 

其次,需要正確刪除表示對話的C++對象。對于模式對來說,這很容易,需要創建函數返回后即可刪除C++對象;無模式對話不是同步的,創建函數調用后立即返回,因而用戶不知道何時刪除C++對象。撤銷窗口時工作框調用CWnd : : PostNcDestroy,可以重置該函數并執行清除操作,諸如刪除this指針。 

void CSampleDialog : : PostNcDestroy ( ) 

{ 

// Declete the C++ object that represents this dialog . 

delete this ; 

} 

最后,要創建無模式對話。可以調用CDialog : : DoModal創建一個模式對放, 要創建一個無模式對話則要調用CDialog: : Create。下面的例子說明了應用程序是如何創建無模式對話的: 

void CMainFrame : : OnSampleDialog ( ) 

{ 

//Allocate a modeless dialog object . 

CSampleDilog * pDialog =new CSampleDialog ; 

ASSERT_VALID (pDialog) ; 

//Create the modeless dialog . 

BOOL bResult = pDialog —> Creste (IDD_IDALOG) ; 

ASSERT (bResult ) ; 

} 

31、如何在對話框中顯示一個位圖 

這要歸功于Win 32先進的靜態控件和Microsoft的資源編輯器, 在對話框中顯示位圖是很容易的, 只需將圖形控件拖到對話中并選擇適當屬性即可,用戶也可以顯示圖標、位圖以及增強型元文件。 

32、如何改變對話或窗體視窗的背景顏色 

調用CWinApp : : SetDialogBkColor可以改變所有應用程序的背景顏色。第一個參數指定了背景顏色,第二個參數指定了文本顏色。下例將應用程序對話設置為藍色背景和黃色文本。 

BOOL CSampleApp : : InitInstance ( ) 

{ 


//use blue dialog with yellow text . 

SetDialogBkColor (RGB (0, 0, 255 ), RGB ( 255 , 255 , 0 ) ) ; 


} 

需要重畫對話(或對話的子控件)時,Windows向對話發送消息WM_CTLCOLOR,通常用戶可以讓Windows選擇繪畫背景的刷子,也可重置該消息指定刷子。下例說明了創建一個紅色背景對話的步驟。 

首先,給對話基類增加一人成員變量CBursh : 

class CMyFormView : public CFormView 

{ 


private : 

CBrush m_ brush ; // background brush 


} ; 

其次, 在類的構造函數中將刷子初始化為所需要的背景顏色。 

CMyFormView : : CMyFormView ( ) 

{ 

// Initialize background brush . 

m_brush .CreateSolidBrush (RGB ( 0, 0, 255 ) ) 

} 

最后,使用ClassWizard處理WM_CTLCOLOR消息并返回一個用來繪畫對話背景的刷子句柄。注意:由于當重畫對話控件時也要調用該函數,所以要檢測nCtlColor參量。 

HBRUSH CMyFormView : : OnCtlColor (CDC* pDC , CWnd*pWnd , UINT nCtlColor ) 

{ 

// Determine if drawing a dialog box . If we are , return +handle to 

//our own background brush . Otherwise let windows handle it . 

if (nCtlColor = = CTLCOLOR _ DLG ) 

return (HBRUSH) m_brush .GetSafeHandle ( ) ; 

return CFormView : : OnCtlColor (pDC, pWnd , nCtlColor ); 

} 


--------------------------------------------------------------------------------


Visual C++編程技巧之五 

33、如何獲取一個對話控件的指針 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人一级电影| 六月丁香综合在线视频| 亚洲乱码精品一二三四区日韩在线| 中文字幕一区二区三区视频| 久久精品人人做| 亚洲国产精品天堂| 一本到三区不卡视频| 一本大道久久a久久综合| 国产精品免费久久久久| 国产v日产∨综合v精品视频| 久久久五月婷婷| 亚洲午夜视频在线观看| 欧美性生活久久| 国产精品99久久久| 色8久久人人97超碰香蕉987| 日韩一区二区三区四区五区六区| 成人免费在线视频观看| 国精产品一区一区三区mba桃花| 欧美日韩一区 二区 三区 久久精品| 久久久亚洲精品一区二区三区| 蜜桃av一区二区在线观看| 欧美午夜不卡在线观看免费| 亚洲天堂精品在线观看| 国产成人免费网站| 亚洲精品在线免费观看视频| 午夜免费久久看| 欧美午夜精品一区二区蜜桃| 一区二区三区四区av| www.亚洲激情.com| 亚洲国产精品成人综合色在线婷婷| 久久精品国产久精国产爱| 国产精品进线69影院| 青青草一区二区三区| 欧美日韩一区不卡| 亚洲一区二区视频| 欧美在线不卡视频| 欧美久久婷婷综合色| 99国产精品久久久| 成人免费看片app下载| 国产成人亚洲精品狼色在线| 久久综合久久鬼色中文字| 色噜噜夜夜夜综合网| 免费在线看成人av| 捆绑调教一区二区三区| 欧美日韩久久久久久| 粉嫩一区二区三区在线看| 国产精品电影院| 国产精品18久久久久久久久| 国产日韩高清在线| 成人性视频免费网站| 亚洲国产精品精华液2区45| 成人自拍视频在线观看| 国产精品久久久久7777按摩| 一本久久精品一区二区| 夜夜爽夜夜爽精品视频| 欧美一区二区三区小说| 国产一本一道久久香蕉| 最新中文字幕一区二区三区| 欧美探花视频资源| 久久国产日韩欧美精品| 欧美国产精品v| 欧美性大战久久| 久久国产精品99久久人人澡| 国产精品久久福利| 6080日韩午夜伦伦午夜伦| 精品一区二区三区欧美| 中文字幕一区二区三| proumb性欧美在线观看| 亚洲最大成人网4388xx| 欧美电影免费观看高清完整版在线观看 | 日韩欧美一区二区不卡| 国产大片一区二区| 亚洲综合区在线| 久久久三级国产网站| 在线看日本不卡| 黄网站免费久久| 亚洲成av人片一区二区| 国产日产欧产精品推荐色| 精品视频1区2区3区| 经典一区二区三区| 亚洲一区二区欧美| 国产亚洲欧美日韩在线一区| 欧美日韩一区久久| 成人av在线一区二区| 另类小说图片综合网| 亚洲人精品午夜| 久久免费的精品国产v∧| 欧美日韩免费一区二区三区视频| 国产大片一区二区| 久久精品久久久精品美女| 亚洲欧美日韩一区二区| 久久精品在这里| 91精品在线麻豆| 在线看不卡av| 国产精品一二三四| 美女视频网站久久| 亚洲图片欧美视频| 亚洲欧美区自拍先锋| 国产欧美一区二区精品性色| 日韩视频一区二区| 欧美情侣在线播放| 91高清视频免费看| 91美女在线观看| 粉嫩av亚洲一区二区图片| 精品亚洲aⅴ乱码一区二区三区| 亚洲动漫第一页| 一区二区欧美国产| 日韩毛片在线免费观看| 中文天堂在线一区| 欧美国产成人精品| 中国色在线观看另类| 欧美国产一区二区在线观看| 2020国产精品| 国产日韩欧美一区二区三区综合| 欧美精品一区在线观看| 欧美成人午夜电影| 日韩欧美精品三级| 精品对白一区国产伦| 2024国产精品| 国产欧美日韩综合精品一区二区| 久久香蕉国产线看观看99| 国产三级三级三级精品8ⅰ区| 26uuu久久天堂性欧美| 久久久精品国产免大香伊| 国产日韩欧美精品一区| 国产精品久久久久久久久免费相片 | 亚洲成人精品一区二区| 亚洲成人精品一区| 免费一区二区视频| 久久精品噜噜噜成人av农村| 国产美女久久久久| gogogo免费视频观看亚洲一| 97精品电影院| 欧美午夜精品电影| 欧美成人伊人久久综合网| 久久久天堂av| 亚洲欧美另类图片小说| 午夜精品一区二区三区三上悠亚| 日产欧产美韩系列久久99| 久久疯狂做爰流白浆xx| 成人av在线观| 在线不卡免费欧美| 久久午夜色播影院免费高清| 亚洲天堂免费看| 日韩av高清在线观看| 国产一区二区三区精品欧美日韩一区二区三区 | www久久精品| 国产精品麻豆久久久| 亚洲最新视频在线观看| 日本v片在线高清不卡在线观看| 精品一区二区三区久久久| 成人开心网精品视频| 欧美优质美女网站| 精品国产免费视频| 亚洲丝袜美腿综合| 男女男精品视频网| 成人一区二区三区中文字幕| 欧美性猛交xxxx乱大交退制版| 日韩欧美在线不卡| 成人欧美一区二区三区黑人麻豆 | 欧美女孩性生活视频| 精品国产区一区| 亚洲国产视频直播| 国产精品夜夜爽| 欧美三级日韩三级| 国产三区在线成人av| 午夜欧美大尺度福利影院在线看 | 精品一区二区三区欧美| 色婷婷精品久久二区二区蜜臀av | 强制捆绑调教一区二区| 99热在这里有精品免费| 欧美一区二区三区视频免费播放| 国产精品久久久久永久免费观看| 日本在线播放一区二区三区| 成人免费高清在线| 精品国产91九色蝌蚪| 丝袜脚交一区二区| 色综合av在线| 中文字幕va一区二区三区| 麻豆国产一区二区| 欧美日韩精品免费| 亚洲欧洲精品一区二区三区不卡| 精品一区二区三区免费毛片爱| 欧美一区二区久久| 亚洲综合在线第一页| 99精品欧美一区二区蜜桃免费| 国产网红主播福利一区二区| 狂野欧美性猛交blacked| 欧美一区二区在线播放| 亚洲国产aⅴ成人精品无吗| 91无套直看片红桃| 国产精品免费丝袜| av动漫一区二区| 国产精品伦理一区二区| 国产91丝袜在线播放0| 国产亚洲精品aa| 国产91精品精华液一区二区三区 | 成人性生交大片免费| 久久久三级国产网站| 国产在线不卡视频|