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

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

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

?? Visual C++編程技巧.txt Visual C++編程技巧.txt
?? TXT
?? 第 1 頁 / 共 5 頁
字號:
http://syinfo.51.net/technology/index.html
http://syinfo.51.net/technology/index.html
http://syinfo.51.net/technology/index.html
http://syinfo.51.net/technology/index.html


Visual C++編程技巧之一 

1. 如何獲取應用程序的實例句柄? 

2. 如何通過代碼獲得應用程序主窗口的指針? 

3.如何在程序中獲得其他程序的 圖標? 

4.如何編程結束應用程序?如何編程控制windows的重新引導? 

5.怎樣加栽其他的應用程序? 

6. 確定應用程序的 路徑 

7. 獲得各種目錄信息 

8. 如何自定義消息 

  

1. 如何獲取應用程序的實例句柄? 

應用程序的 實例句柄保存在CWinAppIm_hInstance 中,可以這么調用 

AfxGetInstancdHandle獲得句柄. 

Example: HANDLE hInstance=AfxGetInstanceHandle(); 

2. 如何通過代碼獲得應用程序主窗口的指針? 

主窗口的 指針保存在CWinThread::m_pMainWnd中,調用 AfxGetMainWnd實現。 

AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED); //使程序最大化. 

3.如何在程序中獲得其他程序的 圖標? 

兩種方法: 

(1) SDK函數 SHGetFileInfo 或使用 ExtractIcon獲得圖標資源的 handle, 

(2) SDK函數 SHGetFileInfo獲得有關文件的 很多信息,如大小圖標,屬性,類型等. 

Example(1): 在程序窗口左上角顯示 NotePad圖標. 

void CSampleView: OnDraw(CDC * pDC) 

{ 

if( :: SHGetFileInfo(_T("c:\\pwin95\\notepad.exe"),0, 

&stFileInfo,sizeof(stFileInfo),SHGFI_ICON)) 

{ 

pDC ->DrawIcon(10,10,stFileInfo.hIcon); 

} 

} 

Example(2):同樣功能,Use ExtractIcon Function 

void CSampleView:: OnDraw(CDC *pDC) 

{ 

HICON hIcon=:: ExtractIcon(AfxGetInstanceHandle(),_T 

("NotePad.exe"),0); 

if (hIcon &&hIcon!=(HICON)-1) 

pDC->DrawIcon(10,10,hIcon); 

} 

說明: 獲得notepad.exe的路徑正規上來說用GetWindowsDirectory 函數得到,如果是調用 win95下的畫筆,應該用訪問注冊表的方法獲得其路徑,要作成一個比較考究的程序,考慮應該全面點. 

4.如何編程結束應用程序?如何編程控制windows的重新引導? 

這是個很簡單又是編程中經常要遇到的問題. 

第一問,向窗口發送 WM_CLOSE消息,調用 CWnd::OnClose成員函數.允許對用戶提示 

是否保存修改過的數據. 

Example: AfxGetMainWindow()->SendMessage(WM_CLOSE); 

還可以創建一個自定義的函數 Terminate Window 

void Terminate Window(LPCSTR pCaption) 

{ 

CWnd *pWnd=Cwnd::FindWindow(NULL,pCaption); 

if (pWnd) 

pWnd ->SendMessage(WM_CLOSE); 

} 

說明: FindWindow函數不是提倡的做法,因為它無法處理標題欄自動改變,比如我們要檢測 Notepad是不是已運行而事先不知道Notepad的標題欄,這時 FindWindow就無能為力了,可以通過枚舉 windows任務列表的辦法來實現。 在 機械出版社"Windows 95 API開發人員指南"一書有比較詳細的介紹,這里就不再多說樂。 

第二問,Use ExitWindowsEx Function函數控制系統是重新引導,還是重啟 windows.前面已經有人講過樂,就不再提了。 

5.怎樣加栽其他的應用程序? 

我記得這好象是出場頻度很高的問題。 

三個SDK函數 winexec, shellexecute,createprocess可以使用。 

WinExec最簡單,兩個參數,前一個指定路徑,后一個指定顯示方式.后一個參數值得說一下,比如泥用 SW_SHOWMAXMIZED方式去加栽一個無最大化按鈕的 程序,呵呵就是Neterm,calc等等,就不會出現正常的 窗體,但是已經被加到任務列表里了。ShellExecute較 WinExex靈活一點,可以指定工作目錄,下面的 Example就是直接打開 c:\temp\1.txt,而不用加栽與 txt文件關聯的應用程序,很多安裝程序完成后都會打開一個窗口,來顯示Readme or Faq,偶猜就是這么作的啦. 

ShellExecute(NULL,NULL,_T("1.txt"),NULL,_T("c:\\temp"),SW_SHOWMAXMIZED); 

CreateProcess最復雜,一共有十個參數,不過大部分都可以用NULL代替,它可以指定進程的安全屬性,繼承信息,類的優先級等等.來看個很簡單的 Example: 

STARTUPINFO stinfo; //啟動窗口的信息 

PROCESSINFO procinfo; //進程的信息 

CreateProcess(NULL,_T("notepad.exe"),NULL,NULL.FALSE, NORMAL_PRIORITY_ 

CLASS,NULL,NULL, &stinfo,&procinfo); 

6. 確定應用程序的 路徑 

前些天好象有人問過這個問題. 

Use GetModuleFileName 獲得應用程序的路徑,然后去掉可執行文件名。 

Example: 

TCHAR exeFullPath[MAX_PATH]; // MAX_PATH在API中定義了吧,好象是128 

GetModuleFileName(NULL,exeFullPath,MAX_PATH) 

7. 獲得各種目錄信息 

Windows目錄: Use "GetWindowsDirectory“ 

Windows下的system目錄: Use "GetSystemDirectory" 

temp目錄: Use "GetTempPath " 

當前目錄: Use "GetCurrentDirectory" 

請注意前兩個函數的第一個參數為 目錄變量名,后一個為緩沖區; 后兩個相反. 

8. 如何自定義消息 

也有人問過的,其實不難。 

(1) 手工定義消息,可以這么寫 #define WM_MY_MESSAGE(WM_USER+100), 

MS 推薦的至少是 WM_USER+100; 

(2)寫消息處理函數,用 WPARAM,LPARAM返回LRESULT. 

LRESULT CMainFrame::OnMyMessage(WPARAM wparam,LPARAM lParam) 

{ 

//加入你的處理函數 

} 

(3) 在類的 AFX_MSG處進行聲明,也就是常說的"宏映射" 

  


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

Visual C++ 編程技巧之二 

9. 如何改變窗口的圖標? 

10. 如何改變窗口的缺省風格? 

11. 如何將窗口居中顯示? 

12. 如何讓窗口和 MDI窗口一啟動就最大化和最小化? 

13. 如何使程序保持極小狀態? 

14. 如何限制窗口的大小? 

15. 如何使窗口不可見? 

16. 如何使窗口始終在最前方? 

  

9. 如何改變窗口的圖標? 

向窗口發送 WM_SECTION消息。 

Example: 

HICON hIcon=AfxGetApp() ->LoadIcon(IDI_ICON); 

ASSERT(hIcon); 

AfxGetMainWnd() ->SendMessage(WM_SECTION,TRUE,(LPARAM) hIcon); 

10. 如何改變窗口的缺省風格? 

重栽 CWnd:: PreCreateWindow 并修改CREATESTRUCT結構來指定窗口風格和其他 

創建信息. 

Example: Delete "Max" Button and Set Original Window's Position and Size 

BOOL CMainFrame:: PreCreateWindow (CREATESTRUCT &cs) 

{ 

cs.style &=~WS_MAXINIZEMOX; 

cs.x=cs.y=0; 

cs.cx=GetSystemMetrics(SM_CXSCREEN/2); 

cs.cy=GetSystemMetrics(SM_CYSCREEN/2); 

return CMDIFramewnd ::PreCreateWindow(cs); 

} 

11. 如何將窗口居中顯示? 

Easy, Call Function CWnd:: Center Windows 

Example(1): Center Window( ); //Relative to it's parent 

// Relative to Screen 

Example(2): Center Window(CWnd:: GetDesktopWindow( )); 

//Relative to Application's MainWindow 

AfxGetMainWnd( ) -> Center Window( ); 

12. 如何讓窗口和 MDI窗口一啟動就最大化和最小化? 

先說窗口。 

在 InitStance 函數中設定 m_nCmdShow的 取值. 

m_nCmdShow=SW_SHOWMAXMIZED ; //最大化 

m_nCmdShow=SW_SHOWMINMIZED ; //最小化 

m_nCmdShow=SW_SHOWNORMAL ; //正常方式 

MDI窗口: 

如果是創建新的應用程序,可以用 MFC AppWizard 的Advanced 按鈕并在 

MDI子窗口風格組中檢測最大化或最小化; 還可以重載 MDI Window 的 

PreCreateWindow函數,設置WS_MAXMIZE or WS_MINMIZE; 

如果從 CMDIChildWnd 派生,調用 OnInitialUpdate函數中的 CWnd::Show 

Window來指定 MDI Child Window的 風格。 

13. 如何使程序保持極小狀態? 

很有意思的 問題 

這么辦: 在恢復程序窗體大小時, Windows會發送WM_QUERY-OPEN消息, 

用 ClassWizard設置成員函數 OnQueryOpen() ,add following code: 

Bool CMainFrame:: OnQueryOpen( ) 

{ 

Return false; 

} 

14. 如何限制窗口的大小? 

也就是 FixedDialog形式。 Windows 發送 WM_GETMAXMININFO消息來跟蹤, 

響應它,在 OnGetMAXMININFO 中寫代碼: 

15. 如何使窗口不可見? 

很簡單,用SW_HIDE 隱藏窗口,可以結合 FindWindow,ShowWindow 控制. 

16. 如何使窗口始終在最前方? 

兩種途徑. 

BringWindowToTop(Handle); 

SetWindowPos函數,指定窗口的 最頂風格,用WS_EX_TOPMOST擴展窗口的 風格 

Example: 

void ToggleTopMost( CWnd *pWnd) 

{ 

ASSERT_VALID(pWnd); 

pWnd ->SetWindowPos(pWnd-> GetStyle( ) &WS_EX_TOPMOST)? 

&wndNoTopMOST: &wndTopMost,0,0,0,0,SSP_NOSIZE|WSP_NOMOVE); 

} 


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


Visual C++編程技巧之三 

17、如何創建一個字回繞的CEditView 

18、通用控件的顯示窗口 

19、移動窗口 

20、重置窗口的大小 

21、如何單擊除了窗口標題欄以外的區域使窗口移動 

22、如何改變視窗的背景顏色 

23、如何改變窗口標題 

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

  

17、如何創建一個字回繞的CEditView 

重載CWnd : : PreCreateWindow和修改CREATESTRUCT結構,關閉CEditView對象的ES_AUTOHSCROLL和WS_HSCROLL風格位, 由于CEditView : : PreCreateWindow顯示設置cs. style,調用基類函數后要修改cs . style。 

BOOL CSampleEDitView : : PreCreateWindow (CREATESTRUCT&cs) 

{ 

//First call basse class function . 

BOOL bResutl =CEditView : : PreCreateWindow (cs) ; 

// Now specify the new window style . 

cs.style &= ~ (ES_AUTOHSCROLL |WS_HSCROLL); 

return bResult ; 

} 

18、通用控件的顯示窗口 

MFC提供了幾個CView派生的視窗類, 封裝了通用控件的功能,但仍然使用工 

作框文檔顯示窗口體系結構:CEditView封裝了編輯控件,CTreeView保持了樹列表 

控件,CListView封裝了列表顯示窗口控件,CRichEditView可以處理多種編輯控件。 

19、移動窗口 

調用CWnd : : SetWindowPos并指定SWP_NOSIZE標志。目的位置與父窗口 

有關(頂層窗口與屏幕有關)。調用CWnd : : MoveWindow時必須要指定窗口 

的大小。 

//Move window to positoin 100 , 100 of its parent window . 

SetWindowPos (NULL, 100 , 100 , 0 , 0 , SWP_NOSIZE |SWP_NOAORDER); 

20、重置窗口的大小 

調用CWnd: : SetWindowPos并指定SWP_NOMOVE標志, 也可調用 

CWnd : : MoveWindow 但必須指定窗口的位置。 

// Get the size of the window . 

Crect reWindow ; 

GetWindowRect (reWindow ); 

//Make the window twice as wide and twice as tall . 

SetWindowPos (NULL , 0 , 0 , reWindow . Width ( ) *2, 

reWindow . Height () * 2, 

SWP_NOMOVE |SWP_NOZORDER ); 

21、如何單擊除了窗口標題欄以外的區域使窗口移動 

當窗口需要確定鼠標位置時Windows向窗口發送WM_NCHITTEST信息,可以處理 

該信息使Windows認為鼠標在窗口標題上。對于對話框和基于對話的應用程序,可 

以使用ClassWizard處理該信息并調用基類函數, 如果函數返回HTCLIENT 則表明 

鼠標在客房區域,返回HTCAPTION表明鼠標在Windows的標題欄中。 

UINT CSampleDialog : : OnNcHitTest (Cpoint point ) 

{ 

UINT nHitTest =Cdialog: : OnNcHitTest (point ); 

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

} 

上述技術有兩點不利之處, 其一是在窗口的客戶區域雙擊時, 窗口將極大; 

其二, 它不適合包含幾個視窗的主框窗口。還有一種方法,當用戶按下鼠標左鍵 

使主框窗口認為鼠標在其窗口標題上,使用ClassWizard在視窗中處理WM_LBUTTODOWN 

信息并向主框窗口發送一個WM_NCLBUTTONDOWN信息和一個單擊測試HTCAPTION。 

void CSampleView : : OnLButtonDown (UINT nFlags , Cpoint point ) 

{ 

CView : : OnLButtonDow (nFlags , pont ); 

//Fool frame window into thinking somene clicked on 

its caption bar . 

GetParentFrame ( ) —> PostMessage ( 

WM_NCLBUTTONDOWN , HTCAPTION , MAKELPARAM (poitn .x , point .y) ); 

} 

該技術也適用于對話框和基于對的應用程序,只是不必調用CWnd : : GetParentFrame 。 

void CSampleDialog : : OnLbuttonDown (UINT nFlags, Cpoint point ) 

{ 

Cdialog : : OnLButtonDow (nFlags, goint ); 

//Fool dialog into thinking simeone clicked on its caption bar . 

PostMessage (WM_NCLBUTTONDOWN , HTCAPTION , MAKELPARM (point.x , point. y ) ) 

} 

22、如何改變視窗的背景顏色 

Windows向窗口發送一個WM_ERASEBKGND消息通知該窗口擦除背景,可以使用 

ClassWizard重載該消息的缺省處理程序來擦除背景(實際是畫),并返回TRUE以 

防止Windows擦除窗口。 

//Paint area that needs to be erased. 

BOOL CSampleView : : OnEraseBkgnd (CDC* pDC) 

{ 

// Create a pruple brush. 

CBrush Brush (RGB (128 , 0 , 128) ); 

// Select the brush into the device context . 

CBrush* pOldBrush = pDC—>SelcetObject (&brush); 

// Get the area that needs to be erased . 

CRect reClip ; 

pDC—>GetCilpBox (&rcClip); 

//Paint the area. 

pDC—> PatBlt (rcClip.left , rcClip.top , 

rcClip.Width ( ) , rcClip.Height ( ) , PATCOPY ); 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产在线麻豆精品观看| 欧美性感一区二区三区| 欧洲精品在线观看| 久久综合九色综合欧美就去吻 | 成人精品电影在线观看| 欧美三日本三级三级在线播放| 精品国精品自拍自在线| 亚洲国产精品久久久男人的天堂| 麻豆久久久久久| 色婷婷av一区二区三区gif| 国产日韩亚洲欧美综合| 日韩激情视频在线观看| 99亚偷拍自图区亚洲| 久久伊99综合婷婷久久伊| 污片在线观看一区二区| 91网站黄www| 国产欧美日韩三级| 国产一区二区三区香蕉| 91精品国产综合久久久蜜臀粉嫩 | 91美女在线看| 精品国产髙清在线看国产毛片| 亚洲国产精品久久一线不卡| 91色视频在线| 国产欧美日韩亚州综合| 高清不卡一二三区| 久久久久久久久久电影| 久88久久88久久久| 91精品欧美福利在线观看| 亚洲成av人片在线| 欧美无人高清视频在线观看| 亚洲乱码国产乱码精品精的特点| 国产99久久久精品| 国产欧美日本一区视频| 精品无人码麻豆乱码1区2区 | 久久综合九色综合欧美就去吻 | 欧洲生活片亚洲生活在线观看| 国产精品网站在线观看| 国产suv一区二区三区88区| 久久久久久免费网| 国产精品一级片在线观看| 国产日产欧产精品推荐色 | 日韩专区中文字幕一区二区| 911精品国产一区二区在线| 天使萌一区二区三区免费观看| 777色狠狠一区二区三区| 日韩av中文字幕一区二区| 欧美一级二级在线观看| 精品一区二区影视| 国产日韩av一区| www.99精品| 亚洲成人激情综合网| 欧美一卡在线观看| 国产91精品入口| 亚洲精品国产a久久久久久 | 99re成人在线| 亚洲一区二区综合| 日韩欧美激情四射| 成人黄页在线观看| 五月婷婷久久丁香| 久久综合丝袜日本网| 91在线porny国产在线看| 夜色激情一区二区| 日韩免费视频一区二区| 国产精品一区二区你懂的| 国产精品久久久久一区二区三区 | 成人国产电影网| 亚洲主播在线播放| 欧美精品一区二区三区蜜桃| 成人黄色av网站在线| 亚洲激情图片一区| 日韩精品一区二区三区在线观看 | 成人精品小蝌蚪| 一区二区三区波多野结衣在线观看 | 91丨porny丨国产| 午夜av一区二区| 国产精品视频九色porn| 欧美日韩久久不卡| 国产成人在线观看免费网站| 亚洲国产中文字幕在线视频综合| 久久日韩精品一区二区五区| 91蜜桃网址入口| 狠狠色丁香久久婷婷综合丁香| 亚洲激情图片小说视频| 久久久久国产一区二区三区四区| 欧美色图12p| av亚洲精华国产精华精| 卡一卡二国产精品| 亚洲国产精品久久不卡毛片| 国产精品黄色在线观看| 日韩免费看网站| 欧美日韩国产一级二级| 91亚洲国产成人精品一区二三| 精品一区二区免费在线观看| 亚洲国产精品麻豆| 亚洲私人黄色宅男| 国产日韩av一区二区| 日韩免费一区二区三区在线播放| 精品国产一区二区三区久久影院| 色婷婷综合久久| 成人午夜激情片| 国产一区二区三区| 蜜桃视频第一区免费观看| 亚洲韩国精品一区| 综合久久给合久久狠狠狠97色| 国产日产亚洲精品系列| 久久欧美一区二区| 精品久久人人做人人爽| 欧美一级二级三级乱码| 欧美久久久久久久久久| 欧美日韩午夜影院| 欧美三级资源在线| 欧美日韩一本到| 欧美日韩视频在线第一区| 欧美性极品少妇| 91黄视频在线| 日本久久精品电影| 欧美亚洲国产bt| 欧美人与性动xxxx| 欧美日韩国产综合久久| 欧美日本一区二区三区四区| 欧美日韩高清一区| 91精品国产综合久久香蕉麻豆| 欧美精品在线一区二区三区| 欧美日精品一区视频| 欧美另类高清zo欧美| 91精品国产免费久久综合| 欧美电视剧免费观看| 久久久久国产精品麻豆| 日本一区二区成人| 亚洲乱码日产精品bd | 国产色一区二区| 国产精品嫩草99a| 国产精品色在线观看| 亚洲同性gay激情无套| 亚洲图片有声小说| 全国精品久久少妇| 国产乱码一区二区三区| 成人aaaa免费全部观看| 色久优优欧美色久优优| 欧美精品在线一区二区| 久久免费电影网| 日本午夜一本久久久综合| 精品一区二区三区免费毛片爱| 国产黄色91视频| 色狠狠综合天天综合综合| 7777精品伊人久久久大香线蕉的| 精品黑人一区二区三区久久| 国产精品色一区二区三区| 亚洲一区二区av在线| 麻豆极品一区二区三区| 99精品视频在线播放观看| 欧美嫩在线观看| www一区二区| 亚洲一区二区3| 国产一区三区三区| 欧洲精品在线观看| 国产亚洲精品资源在线26u| 亚洲综合激情小说| 国产激情视频一区二区在线观看| 色综合天天综合色综合av| 日韩三级在线观看| 亚洲激情在线激情| 国产精品99久久不卡二区| 欧美视频一区二区三区在线观看| 2020国产精品自拍| 亚洲国产综合91精品麻豆| 懂色av中文字幕一区二区三区| 欧美日韩成人激情| 国产精品久线观看视频| 久久99日本精品| 在线观看精品一区| 亚洲国产高清不卡| 久久成人麻豆午夜电影| 欧美性色aⅴ视频一区日韩精品| 精品美女在线播放| 天堂一区二区在线| 91精品福利视频| 国产精品乱码一区二区三区软件| 成人h动漫精品一区二区| 在线综合视频播放| 亚洲精品视频一区二区| 国产在线精品免费| 日韩欧美一区二区免费| 天天色天天操综合| 色成年激情久久综合| 国产精品亲子乱子伦xxxx裸| 日产国产高清一区二区三区| 91国偷自产一区二区三区观看| 国产精品日韩成人| 国产麻豆视频精品| 欧美成人高清电影在线| 日韩av在线发布| 欧美剧在线免费观看网站 | 丰满亚洲少妇av| 久久久久久久国产精品影院| 激情久久久久久久久久久久久久久久| 欧美精品一卡二卡| 亚洲国产精品久久久男人的天堂| 色婷婷综合久久久| ...xxx性欧美|