|
在許多VC教科書中這些函數(shù)/方法、結(jié)構、宏等比較常見,覺得比較重要,雖然不用記住,但應該知道,所以列舉出來,沒寫出參數(shù)和返回值情況,編寫程序時還需仔細查看MSDN文檔。本人英語水平較差再加上自己的一些理解,可能有不少錯誤,僅供初學者參考。 CSize說明一個矩形的高和寬,調(diào)用CDC::GetTextExtent成員函數(shù)計算使用當前字體的一行文字的高和寬決定的尺寸。 CString::LoadString把一個由nID標識的字符串資源讀取到現(xiàn)有的CString對象中。 CDC::BeginPath:打開設備上下文中的路徑,路徑打開后,應用程序可以開始調(diào)用GDI畫圖函數(shù)定義位于路徑上的點。 CDC::SelectClipPath選擇當前路徑作為設備上下文的剪切區(qū)域,通過使用指定模式與任何現(xiàn)有的剪切區(qū)域合并(所有繪制工作都只作用于該剪切區(qū)域)。 CDC::GetTextMetrics:取回使用屬性設備上下文的當前字體尺寸。 CDC::CreateSolidCaret:為系統(tǒng)創(chuàng)建實心矩形光標并聲明。 CDC::CreateCaret:為系統(tǒng)光標創(chuàng)建一個新圖形,使用Show Caret顯示光標。 CDC::SetTextColor:把文字顏色設定為指定色。 CDC::GetBkColor:返回當前指定顏色。 CDC::SetCaretPos:設置光標位置 CDC::DrawText:調(diào)用該成員函數(shù)在給定矩形中輸出格式化文字,可輸出多行文字并規(guī)定對齊方式和使用何種風格。 (1) CMenu::CheckMenuItem:從彈出菜單的菜單項上添加或刪除復選標記。 CMenu::SetDefaultItem:為指定菜單設置默認菜單項。 Cwnd::GetMenu():取回一個指向該窗口菜單的指針。 Cwnd::GetSubMenu():取回彈出菜單的CMenu類對象。 SDK GetSystemMetrics:取回各種系統(tǒng)尺寸和系統(tǒng)配置設置。所有由GetSystemMetrics函數(shù)取回的尺寸都以象素為單位。 CMenu::SetMenuItemBitmaps:為菜單項添加一幅指定位圖 CMenu::EnableMenuItem:激活、取消或變灰一個菜單項。 CWnd::SetMenu:把當前菜單設置為指定菜單。 ::DestroyMenu:該函數(shù)銷毀指定菜單并釋放該菜單占用的內(nèi)存。 CMenu::Detach:把一個CMENU對象與一個Windows菜單分開并返回該句柄。 CCMDUI::m_nIndex:菜單項,工具欄或其它由CCMDUI對象表示用戶界面對象的索引。 CCMDUI::m_nID:菜單項,工具欄或其它由CCMDUI對象表示用戶界面對象的ID。 CCMDUI::Enable:該函數(shù)使菜單項有效或無效。 CWnd::OnContextMenu:當用戶在該窗口點擊右鍵時由框架調(diào)用??梢允褂肨rackPopupMenu顯示上下文菜單處理這條消息。 CWnd::TrackPopupMenu:在指定位置顯示浮動彈出窗口并跟蹤彈出菜單的菜單項。 CWnd::Clienttoscreen:把顯示器上給定的點或矩形的客戶坐標轉(zhuǎn)換成屏幕坐標。 CPoint::Offset增加Cpoint對象的x和y成員的值。 CWnd::Getstyle:返回當前窗口式樣。 CMenu::CreatePopupMenu:創(chuàng)建一個彈出菜單并與Cmenu對象聯(lián)系起來。 CMenu::AppendMenu:在菜單的末尾添加一個新菜單項。 CMenu::Insertmenu:往指定位置插入一個菜單,其后的菜單項向后移。 CMenu::DeleteMenu:從菜單中刪除一個菜單項。 CWnd::OnCommand:當用戶選擇一個菜單項時,或子控件發(fā)送通知消息時,再或當快捷鍵鍵擊時框架調(diào)用這個成員函數(shù)。 CFrameWnd::GetActiveView:調(diào)用該函數(shù)獲得與框架窗口相關的活動視窗。 CStringArray:支持Cstring對象的數(shù)組的集合類。 CWnd::DrawMenuBar:重畫菜單欄。當該窗口已經(jīng)創(chuàng)建后菜單欄發(fā)生變化時調(diào)用該成員函數(shù)。 (2) CDialog::OnInitDialog:調(diào)用該成員函數(shù)對WM_INITDIALOG消息做出反應。當Create, CreateIndirect或DoModal調(diào)用時這條消息發(fā)送到對話框,這些調(diào)用發(fā)生在對話框窗口剛要顯示之前。當對話框初始化時如果需要執(zhí)行特定處理重寫這個成員函數(shù)。 CButton::Create:創(chuàng)建一個按鍵控件并將其與CButton對象關連起來。 CWnd::GetDlgItem:取回對話框或其它窗口中指定控件或子窗口的指針。 CWnd:GetWindowText:將Cwnd標題復制到由lpszstringbuf指向的子符串中。 C: atoi:將一個字符串轉(zhuǎn)化為整數(shù)。 itoa:將一個整數(shù)轉(zhuǎn)化為字符串。 CWnd::SetWindowText:將窗口標題設置為指定文字。 CWnd::GetDlgItemText:調(diào)用這個成員函數(shù)取回與對話框中某個控件相關的標題或文字。 CWnd::SetDlgItemText:設置一個窗口或?qū)υ捒蛑械目丶臉祟}或文字。 CWnd::GetDlgItemInt:取回由nID標識控件的文字。 CWnd::SetDlgItemInt:把對話框中給定控件的文字設置為代表指定整數(shù)值的字符串。 CWnd::UpdateData:調(diào)用該函數(shù)初始化對話框的數(shù)據(jù)(FALSE)或取回并更新對話框數(shù)據(jù)(TRUE)。 ::SendMessage:該函數(shù)將指定消息發(fā)至一個或多個窗口,不立即返回。 WM_GETTEXT:由應用程序發(fā)送該消息把與窗口相關的文字復制到調(diào)用者提出的字符串中。 CWnd::SendDlgItemMessage:給控件發(fā)送一條消息。使用該函數(shù)等同于獲得指定控件的CWnd*并調(diào)用SendMessage成員函數(shù)。 EM_SETSEL:這個消息選中編輯控件的字符范圍。 CWnd::SetFocus:聲明輸入焦點,返回值為指向前一個擁有輸入焦點的窗口的指針。 CRect::IsRectNull:判斷CRect的上,左,下,右是否都為0。 CRect::IsRectEmpty:判斷CRect是否為空。 CWnd::GetWindowRect:取回窗口邊界尺寸。 CWnd::SetWindowPos:調(diào)用這個成員函數(shù)改變彈出窗口、頂層窗口和子窗口大小,位置和z序。 CWnd::GetNextWindow:搜尋窗口管理器列表中下一個或前一個窗口。 CWnd::GetWindow:返回所需窗口的指針。 CWnd::GetNextDlgTabItem:取回由WS_TABSTOP式樣產(chǎn)生的第一個控件的指針,或指定該控件前面的或后面的指針。 (3) CFont::CreatePointFont:該函數(shù)可以方便地創(chuàng)建指定字體名稱和大小的字體。 CPropertySheet:屬性表單由一個CPropertySheet對象和一個或多個CPropertyPage對象組成。先調(diào)用構造函數(shù)再調(diào)用DoModal或Create,與對話框操作類似。 如果創(chuàng)建向?qū)В恍柙贒oModal前調(diào)用SetWizardMode即可。 激活向?qū)О存I,調(diào)用從OnSetActive中調(diào)用,SetWizardButtons,使用標記(dwFlags)自定義功能和外觀。 在用戶填完向?qū)ё詈笠豁摃r,調(diào)用SetFinishText激活完成按鍵。 CWnd::Invalidate():當下條WM_PAINT消息發(fā)生時,客戶區(qū)域標記要重繪。CWnd更新區(qū)域非空且應用程序消息隊列中沒有其它消息時Windows發(fā)送WM_PAINT消息。如果參數(shù)為TRUE當調(diào)用BeginPaint成員函數(shù)時將清除背景。 CPropertySheet::AddPage將提出的屬性頁增加到表單最右端。 CPropertyPage::OnSetActive:該成員函數(shù)由框架窗口調(diào)用,當用戶選擇某一頁面時,且該頁面變?yōu)榛顒禹撁妗?o:p> CPropertyPage::OnWizardNext:當用戶點擊向?qū)系腘ext的按鍵時由框架窗口調(diào)用該成員函數(shù)。 重寫CDialog::OnInitDialg的意圖:初始化對話框控件。 CComboBox::SetCurSel:在組合框列表框中選擇一個字符串。 CPropertyPage::OnWizardFinish:用戶點擊向?qū)У耐瓿砂粹o時框架調(diào)用該成員函數(shù)。 CCombobox::GetCurSel:調(diào)用該函數(shù)判斷組合框中選擇哪項,以0為索引。 CCombobox::GetLBText:從組合框的列表框中得到字符串。 (4) ::SetWindowLong:該函數(shù)更改指定窗口屬性。 某些數(shù)據(jù)被隱藏,因此所做的更改直到調(diào)用SetWindowPos函數(shù)才生效。 如果使用GWL_WNDPROC替換窗口過程,窗口過程必須遵從WindowProc:回調(diào)函數(shù)介紹中指定的步驟。 返回值為前一個指定的32位整形值。 ::SetClassLong:該函數(shù)將特定偏移量的指定的32位(Long)值替換為指定窗口屬于那個類的WNDCLASS結(jié)構的額外類內(nèi)存。 AfxGetInstanceHandle:該函數(shù)取回當前應用程序的實例句柄。 MAKEINTRESOURC:該宏把一個整形值轉(zhuǎn)換為與資源管理函數(shù)兼容的資源類型,該宏用于替換包含資源名的字符串。 CTime:代表絕對時間和日期。 GetCurrentTime:返回當前時間的對象。 Format將CTime的對象轉(zhuǎn)換為格式化字符串。 CStatusBar::CommandToIndex:獲得指定ID的指示符索引。 CStatusBar::SetPaneInfo:將指定指示符窗格設置為新的ID,式樣和寬度。 CStatusBar::SetPaneTex:調(diào)用該函數(shù)把窗格文字設置為lpsznewText指定的字符串。 CStatusBar::GetItemRect把由nIndex指定的指示符坐標復制到lprect指向的結(jié)構中。 CProgressCtrl:提供Windows一般進度條控件的功能。 CProgressCtrl::Create:創(chuàng)建一個進度條控件并把它與CProgressCtrl對象聯(lián)系起來。 CProgressCtrl::SetPos:設置進度條控件當前位置為nPos指定位置并重畫進度條表現(xiàn)新位置。 AfxRegisterWndClass:允許注冊自定義窗口類。 CProgressCtrl::StepIt:按增量由進度條當前位置前進并重畫進度條反應新位置。 CWnd::IsWindowVisible:判斷給定窗口可視狀態(tài)。 CFramewnd::RecalcLayout當標準控制條在顯示/隱藏切換時或框架窗口更改大小時由框架調(diào)用。 CFrameWnd::DockControlBar:使一個控制條停靠到框架窗口上。 CFraneWnd::ShowControlBar:調(diào)用該成員函數(shù)顯示或隱藏控制條。 CWnd::OnPaint:當Windows或應用程序請求重繪應用程序窗口一部分時,框架調(diào)用該函數(shù)。 CWnd:: MoveWindow:更改窗口位置和尺寸。 CWnd::GetDescendantWindow:調(diào)用該函數(shù)找出由指定ID說明的子窗口。 CFrameWnd::SetMessagText:調(diào)用該函數(shù)把一串字符放在ID為0的狀態(tài)欄窗格上。 CFrameWnd::GetMessagBar:調(diào)用該函數(shù)獲得狀態(tài)欄指針。 (5) 基于UDP協(xié)議的網(wǎng)絡聊天程序?qū)崿F(xiàn)步驟: 一 非阻塞模式套接字: 1 在CWinApp的派生類中創(chuàng)建析構函數(shù),用于終止WS_32.DLL的使用。 2 在其InitInstance函數(shù)中加在套接字庫。 3 在CDialog的派生類中創(chuàng)建析構函數(shù),用于關閉套接字。 4 自定義初始化套接字成員函數(shù)和成員變量(CSocket)并初始化。 5 在該成員函數(shù)中進行綁定并請求套接字基于消息通知的網(wǎng)絡事件(WSAAsynSelect),要判斷這回值情況。 6 對用戶自定義消息進行消息映射。(手工) 7 在其實現(xiàn)函數(shù)中判斷參數(shù)(LPARAM)的低字是否為所需網(wǎng)絡事件:在其中進行接收數(shù)據(jù)。 8 對發(fā)送按鍵進行消息映射,實現(xiàn)發(fā)送功能。 二 阻塞模式套接字使用多線程方式: 1 使用AfxSocketInit全局函數(shù)加載套接字版本1.1的套接字庫。 2 在CDialog的派生類中自定義初始化套接字成員函數(shù)和成員變量(CSocket)。 3 在該成員函數(shù)進行綁定并判斷返回值情況。 4 在InitDialog成員函數(shù)中再創(chuàng)建一個線程用于接收信息,然后關閉線程句柄。定義一個結(jié)構體可以傳遞給線程多個參數(shù),使用完后釋放內(nèi)存。 5 (自定義)ThreadProc函數(shù)用于說明線程起始地址的指針,其參數(shù)為傳遞給使用創(chuàng)建線程函數(shù)的lpParam參數(shù)的函數(shù)的線程數(shù)據(jù)。 6 在該函數(shù)中接收數(shù)據(jù)將格式的數(shù)據(jù)寫入字符串。 7 將一個與產(chǎn)生特定窗口的線程的相關的消息(字符串)放入消息隊列中將消息發(fā)送出去,不等待線程處理立即返回。 8 對消息進行消息映射,(編輯框)。手工 9 對發(fā)送按鍵進行消息映射,發(fā)送數(shù)據(jù)。 (6) 進程間通信四種方式:剪切板、匿名管道、命令管道、郵槽。 (發(fā)送)1 打開剪切板,清空剪切板,調(diào)用GlobalAlloc為指定字符串從堆中分配指定數(shù)量的字節(jié)數(shù),再調(diào)用GlobalLock函數(shù)鎖定一個全局內(nèi)存對象并返回一個指定該對象內(nèi)存塊第一個字節(jié)的指針,接著調(diào)用GlobalUnlock函數(shù)減少用GMEM_MOVEABLE分配的內(nèi)存對象相關的鎖定計數(shù)。每個內(nèi)存對象的內(nèi)部數(shù)據(jù)結(jié)構包括一個初始值為零的鎖定計數(shù),對于可移動內(nèi)存對象GlobalLock函數(shù)將計數(shù)值加一,而GlobalUnlock函數(shù)將其減一,計數(shù)減小到零,才可以被移動或丟棄然后設置剪切板數(shù)據(jù),再關閉剪切板。 (接收)2 打開剪切板調(diào)用IsClipboardFormatAvailable函數(shù)查看剪切板是否包含指定格式的數(shù)據(jù),再調(diào)用GetClipboardData函數(shù)得到句柄,調(diào)用GlobalLock和GlobalUnlock,設置剪切板數(shù)據(jù),關閉剪切板。 AP:1先建立兩個句柄用于讀和寫,在視類中初始化,在析構函數(shù)中關閉句柄。 創(chuàng)建菜單項,創(chuàng)建管道,讀數(shù)據(jù),寫數(shù)據(jù),然后命令響應 調(diào)用創(chuàng)建管道函數(shù)創(chuàng)建管道給安全屬性結(jié)構賦值,該結(jié)構決定返回句柄能否被子進程繼承,然后創(chuàng)建子進程,對STARTINFO結(jié)構體賦初值,使用ZeroMemory宏,設置狀態(tài)dwFlags,這里使用標準句柄。 如果創(chuàng)建失敗,關閉讀寫句柄,并將其設置為零,成功關閉PROCESS_INFORMATION結(jié)構體句柄。 讀數(shù)據(jù),使用Readfile,寫數(shù)據(jù),使用 WriteFile寫入數(shù)據(jù)。 2 子進程創(chuàng)建菜單項,讀數(shù)據(jù),寫數(shù)據(jù),命令響應。 手工增加成員函數(shù),窗口創(chuàng)建成功后,第一個調(diào)用OnInitialUpdate虛函數(shù),在其中對讀寫句柄賦值,用GetStdHandle函數(shù)。 NP:1增加管道句柄,初始化,關閉句柄。 創(chuàng)建菜單項,創(chuàng)建管道,讀數(shù)據(jù),寫數(shù)據(jù),命令響應。 構造命名管道,該函數(shù)創(chuàng)建一個命名管道實例,返回一個后來管道操作句柄。 創(chuàng)建一個事件對象,再調(diào)用ConnectNamedPipe函數(shù)使命名管道服務器進程等待客戶進程,連接到命名管道實例上,對OVERLAPPED結(jié)構體賦初值,判斷連接是否失敗。 調(diào)用WaitforSingleObject函數(shù),當指定對象處于有信號狀態(tài)或超時間隔到達時返回,判斷是否失敗。 2、創(chuàng)建菜單項,連接管道,讀數(shù)據(jù),寫數(shù)據(jù),進行命令響應。 調(diào)用WaitNamedPipe函數(shù)等待直到超時時間到或指定命名管道實例可用于連接,調(diào)用CreateFile打開命名管道。 ReadFile, WriteFile (7) MS:1、創(chuàng)建菜單項,接收數(shù)據(jù),命令響應,(服務器)。 創(chuàng)建郵槽函數(shù)調(diào)用取文件,關閉句柄。 2、創(chuàng)建菜單項,發(fā)送數(shù)據(jù),命令響應(客戶)。 使用CreateFile打開郵槽,WriteFile寫入數(shù)據(jù), CDC::SetBkColor:設置文本背景色。 CDC::SetBkMode:設置背景模式(透明,不透明)。 COleControl::SetBackColor:設置庫存背景色屬性值。 (8) CWinAPP::LoadStdProfileSettings:在InitInstance成員函數(shù)內(nèi)調(diào)用該函數(shù)激活并載入最近使用文件的列表和上次預覽狀態(tài)。 CBitmap::GetBitmap:調(diào)用該成員函數(shù)取回CBitmap對象的消息。 CDC::CreateCompatibleDC:創(chuàng)建一個與pDC指定設備兼容的內(nèi)存設備上下文。內(nèi)存設備上下文是代表顯示界面的內(nèi)存塊,它可以用來在把圖形復制到內(nèi)存設備的實際設備界面之前在內(nèi)存中準備圖形。 CDC::BitBlt:從源設備上下文把一幅位圖復制到當前設備上下文 CDC::StretchBlt:從源矩形把一幅位圖復制到目的矩形,如果需要可以拉伸或壓縮位圖以適合目的矩形大小。 CDC::SetPixel:將指定點上的象素設置為crColor指明的顏色 CColorDialog:允許向應用程序中添加顏色選擇對話框。系統(tǒng)對話框 C::m_cc:CHOOSECOLOR類型的結(jié)構體,其成員保存顏色選擇對話框的特征和值。構造CColorDialog對象后,可以使用m_cc數(shù)據(jù)成員設置對話框各個方面,在調(diào)用DoModal前。 CFontDialog:允許向應用程序中添加字體選擇對話框。 CGdiObject::m_hObject:一個HANDLE包含與該對象相關的HBITMAP,HRGN,HBRUSH,HPEN,HPALETTE或 HFONT。 CGdiObject::DeleteObject:通過釋放與Windows GDI對象相關的所有系統(tǒng)存儲從內(nèi)存中刪除相關的該對象。 CFont::CreateFontIndirect:用lpLogFont指向的LOGFONT結(jié)構給出的特征初始化CFont對象。 CWnd::OnEraseBkgnd:當CWnd對象背景需要清除時框架調(diào)用該函數(shù)。調(diào)用它為繪圖準備一塊無效區(qū)域。 CWnd::ScreenToClient:將顯示器上指定點或矩形的屏幕坐標轉(zhuǎn)換為客戶坐標。 CWnd::OnCtlColor:當子控件將要顯示時框架調(diào)用該成員函數(shù)。 CWnd::GetDlgCtrlID:返回任何子窗口的窗口或控件ID。 CDC::SetTextColor:將文本顏色設置為指定顏色。 CDC::Drawtext:調(diào)用該成員函數(shù)格式化給定矩形中的文字。 CButton::DrawItem:當自畫按鍵的可視方面改變時由框架調(diào)用。 SDK DrawFrameControl:該函數(shù)按指定類型、形式樣繪制框架控件。 CRect::CopyRect:將lpSrcRect矩形復制到CRect。 SDK DrawFocusRect:該函數(shù)繪制一個用來標識該矩形擁有焦點式樣的矩形。 CDC::Draw3dRect:調(diào)用該函數(shù)繪制一個三維矩形。 SDK GetSysColor:該函數(shù)取回指定顯示元素的當前顯色。 CView::OnInitialUpdate:視第一次與文擋關聯(lián)后,但在視被顯示前由框架調(diào)用。 CView::OnDraw:由框架調(diào)用粉刷文擋的圖象。 CWnd::OnPaint:當Windows或應用程序請求重繪應用程序窗口一部分時由框架調(diào)用。 CMetaFileDC: 執(zhí)行一個Windows源文件,其中包含一系列可以產(chǎn)生所需圖形或文字的圖形設備接口命令。要執(zhí)行Windows源文件, 首先創(chuàng)建CMetaFileDC對象,調(diào)用CMetaFileDC構造函數(shù),然后調(diào)用Create成員函數(shù),創(chuàng)建Windows源文件設備上下文并使之與對象相關聯(lián)。 Close成員函數(shù)關閉源文件設備上下文并返回源文件句柄,然后刪除CMetaFileDC對象不在需要源文件時,用DeleteMetaFile函數(shù)從內(nèi)存中刪除它。 CPtrArray:支持空指針的數(shù)組。 CDC::PlayMetaFile:使用源文件句柄可以用來反復播放源文件。 CBitmap::CreateCompatibleBitmap:初始化一個與pDC說明的設備相兼容的位圖。 CView::OnPrepareDC:在屏幕顯示調(diào)用OnDraw成員函數(shù)之前和打印或打印預覽每頁之間調(diào)用OnPrint成員函數(shù)之前由框架調(diào)用。 CDC::DpToLp:把設備坐標轉(zhuǎn)換為邏輯坐標。 可以認為CDC所有成員函數(shù)都以邏輯坐標為參數(shù),但和CRect有關的函數(shù)例外??梢哉J為CWnd的成員函數(shù)都以設備坐標作為參數(shù)。要以邏輯坐標保存數(shù)據(jù)。 CScrollView::SetScrollSizes:當視要更新時調(diào)用。在重寫的OnUpdate成員函數(shù)中調(diào)用調(diào)整滾動特性。 SDK CopyMetaFile:該函數(shù)將Windows格式源文件復制到指定文件。 SDK GetEnhMetaFile:該函數(shù)創(chuàng)建一個保存在指定文件中標識增強格式源文件的句柄。 SDK WriteProfileString:該函數(shù)把一個字符串復制到win.ini文件的指定部分。 SDK GetProfileString:該函數(shù)取回與win.ini文件指定部分的與某個鍵相關的字符串。 CFileDialog:封裝了windows普通文件對話框。 CFileDialog::GetFileName:調(diào)用該函數(shù)取回輸入對話框的文件名。 SDK RegCreateKey:調(diào)用該函數(shù)創(chuàng)建指定的注冊鍵,如果在注冊表中存在該鍵,就打開它。 RegSetValue:該函數(shù)設置默認的數(shù)據(jù)或指定注冊鍵無名值,數(shù)據(jù)必須是字符串。 RegSetValueEx:該函數(shù)設置注冊鍵下指定值的數(shù)據(jù)和類型。 RegCloseKey:該函數(shù)釋放指定注冊鍵的句柄。 RegQueryValue: 該函數(shù)取回與指定注冊鍵默認或無名值相關類的數(shù)據(jù)。 (9) SDK RegOpenKey:該函數(shù)打開指定注冊鍵。 IMPLEMENT_SERIAL:產(chǎn)生有運行時訪問權的動態(tài)CObject派生類的類名的必要C++ 代碼繼承圖表的位置。該宏用于當從CObject繼承一個可串行化的類時定義所需的各種函數(shù)。 DECLARE_SERJAL:宏用于聲明支持串所化的類,產(chǎn)生一個可以被串行化的CObject派生類的必要C++頭文件代碼。 從文擋中讀對象或?qū)ο髮懭胛膿踔小?o:p> 使用CArchive::IsLoading 或CArchive::IsStoring判斷文檔是載入還是存儲。 CDocument::OnNewDocument:由框架調(diào)用作為FileNew命令的一部分。這個函數(shù)的默認執(zhí)行是調(diào)用DeleteContents成員函數(shù)確保文檔為空并標記新文檔為空,重寫該函數(shù)初始化新文檔的數(shù)據(jù)結(jié)構。 如果用戶在SDI應用程序中選擇FileNew命令,框架使用該函數(shù)重新初始化現(xiàn)有的文檔,不是創(chuàng)建新的。 CDocument::SetTitle:調(diào)用該函數(shù)說明文檔的標題。(字符串顯示在框架窗口的標題欄中) CDocument::GetFirstViewPosition:調(diào)用該函數(shù)獲得與文檔關聯(lián)的視列表中第一個視的位置。 CDocunment::GetNextView:調(diào)用該函數(shù)在文檔的視中循環(huán),返回由rPosition標識視的指針。 CArchive:允許以二進制形式永久的保存對象的復雜網(wǎng)絡。 CDocument::Deletecontents:由框架調(diào)用刪除文檔中數(shù)據(jù)而不銷毀CDocument對象自身。在該文檔要被銷毀之前調(diào)用,也被調(diào)用確保在重新使用前文檔為空。 (Windows Sockets) bind:該函數(shù)與套接字的本地地址相關。 在調(diào)用Connect或Listen函數(shù)之前這個函數(shù)用在一個斷開的套接字上。該函數(shù)可以用來綁定面向連接(流式)或面向無連接的(數(shù)據(jù)報)套接字。當調(diào)用(Windows Sockets) Socket函數(shù)創(chuàng)建套接字時,它存在于一個命名空間(地址族)中但并沒有給它分配名字。通過給無名套接字分配一個本地名使用Bind函數(shù)建立該套接字的本地聯(lián)合。 sockaddr:該結(jié)構根據(jù)所選的協(xié)議不同而不同,除了Sa_family參數(shù),sockaddr其它成員以網(wǎng)絡字節(jié)序表示,sa_family必須是AF_INET。 在TCP/IP中,可以用 sockaddr_in 結(jié)構替換sockaddr,以方便填寫地址信息。 Sockaddr_in:在Internet地址族中,該結(jié)構由Windows套接字使用來說明與套接字連接的本地或遠程端點地址。如果該函數(shù)調(diào)用成功返回0,失敗則返回SOCKET_ERROR,由WSAGetLastError返回。將IP地址指定為INADDR_ANY, 允許套接字向任何分配給本地機器的IP地址發(fā)送或接收數(shù)據(jù)。 將地址指定為INADDR_ANY, 允許一個獨立應用接受發(fā)自的多個接口的回應。如果只想讓套接字使用多個IP地址的一個,就必須指定實際地址,可使用inet-addr()函數(shù),該函數(shù)需要一個指定以點分十進制格式表示IP地址的字符串做為其參數(shù),并返回一個適合分配給S_ADDR的u_long類型的數(shù)值。inet_ntoa()函數(shù)完成相反轉(zhuǎn)換,接受in_addr結(jié)構體類型參數(shù),返回以點分十進制格式表示的IP地址字符串。 htonl:該函數(shù)將一個主機的u_long類型成員轉(zhuǎn)換為TCP/IP網(wǎng)絡字節(jié)序。 htons: 該函數(shù)將一個主機的u_Short類型成員轉(zhuǎn)換為TCP/IP網(wǎng)絡字節(jié)序。 listen:該函數(shù)把一個套接字設置為處于監(jiān)聽到來的連接狀態(tài)。 accept:該函數(shù)允許在套接字上接受到來的連接的請求。 send:該函數(shù)在處于已連接狀態(tài)的套接字上發(fā)送數(shù)據(jù)。 recv:該函數(shù)從連接的或綁定的套接字接收數(shù)據(jù)。 closesocket:關閉現(xiàn)在使用的套接字。 WSADATA結(jié)構內(nèi)含關于Windows套接字庫信息。 WSACleannp函數(shù)終止WS2_32.DLL的使用。 recvfrom:該函數(shù)接收數(shù)據(jù)報并保存源地址。 sendto:該函數(shù)將數(shù)據(jù)發(fā)送到指定目的地。 Server:基于TCP(面向連接)的Socket編程 1、 創(chuàng)建套接字(socket) 2、 將套接字綁定到本地地址和端口上(bind) 3、 將套接字設為監(jiān)聽模式,準備接收客戶請求(listen) 4、 等待客戶請求到來,請求到來后,接受連接請求,返回一個新的對應于此次連接的套接字(accept) 5、 用返回的套接字與客戶端進行通信(send/recv) 6、 返回,等待另一客戶請求 7、 關閉套接字 Client: 1、 創(chuàng)建套接字(socket) 2、 向服務器發(fā)出連接請求(connect) 3、 和服務器進行通信(send/recv) 4、 關閉套接字 基于UDP(面向無連接)Socket的編程 Server:服務器端(接收端)程序: 1、 創(chuàng)建套接字(Socket) 2、 將套接字綁定到一個本地地址和端口上(bind) 3、 等待接收數(shù)據(jù)(recvfrom) 4、 關閉套接字 客房端Client:(發(fā)送端)程序 1、 創(chuàng)建套接字(socket) 2、 向服務器發(fā)送數(shù)據(jù)(sendto) 3、 關閉套接字 (10) AfxSocketInit:在CWinAPP::InitInstance中調(diào)用該函數(shù)初始化Windows套接字。加載套接字1.1版本。 CreateThread:該函數(shù)創(chuàng)建一個線程在調(diào)用線程的進程的虛擬地址空間中執(zhí)行。 ThreadProc:該函數(shù)是應用程序定義的函數(shù),用作線程的起始地址。 線程對象存在于系統(tǒng)中直到線程終止,通過調(diào)用CloseHandle關閉它的所有句柄。 socket:該函數(shù)創(chuàng)建一個與指定服務提供者綁定的套接字。 CIPAddressCtrl:提供Windows一般IP地址控件功能。 CIPAddressCtrl::GetAddress:取回IP地址控件中完整地址值。 CreateEvent:該函數(shù)創(chuàng)建或打開一個命名或無名事件對象。 如果為手工重置,該函數(shù)產(chǎn)生一個手工重置事件對象,需要使用ResetEvent函數(shù)把事件狀態(tài)設置為無信號,如果為自動重置,產(chǎn)生一個自動重置事件對象,在單一等待線程釋放后,系統(tǒng)自動把事件狀態(tài)設置為無信號。 使用SetEvent函數(shù)將一個事件對象設置為有信號狀態(tài)。 WaitForSingleObject:當指定對象處于有信號狀態(tài)或超時時間到時該函數(shù)返回。 Sleep:該函數(shù)掛起當前線程的執(zhí)行(最小為指定間隔)。 該函數(shù)使一個線程放棄它剩余的時間片在指定最小毫秒間隔內(nèi)變?yōu)椴豢蛇\行,完后線程繼續(xù)運行。 InitializeCriticalSection:該函數(shù)初始化一個關鍵代碼段對象。 在初始化關鍵代碼段對象后,進程的線程可以在EnterCriticalSection, LeaveCriticalSection函數(shù)中說明該對象提供共享資源的互斥訪問權。 使用完關鍵代碼段后,調(diào)用DeleteCriticalSection函數(shù)。 EnterCriticalSection:該函數(shù)等待指定關鍵代碼段對象的所有權,當調(diào)用的線程同意所有權時函數(shù)返回。 LeaveCriticalSection:該函數(shù)釋放指定關鍵代碼段對象的所有權。 WSACleanup:終止WS2_32.DLL的使用。 WSASocket:該函數(shù)創(chuàng)建一個與指定傳送服務提供者綁定的套接字。 WSAAsyncSelect:該函數(shù)請求套接字網(wǎng)絡事件的基于Windows消息通知。該函數(shù)用于請求當它探測到lEvent參數(shù)指定的任意網(wǎng)絡事件時,WS2_32.DLL應該發(fā)送一條消息到hWnd窗口。 (11) 當命名的網(wǎng)絡事件之一發(fā)生在指定套接字時,應用程序窗口hWnd接收消息wMsg。參數(shù)wParam說明套接字在哪個網(wǎng)絡事件上發(fā)生的,lParam低字說明發(fā)生的網(wǎng)絡事件,lParam的高字包含錯誤代碼。 WSABUF結(jié)構可以完成數(shù)據(jù)緩沖區(qū)的創(chuàng)建或操作。 WSARecvFrom:接收一個數(shù)據(jù)報并保存源地址。 hostent結(jié)構由函數(shù)使用保存指定主機的信息,應用程序不能更改其內(nèi)容或釋放其成員。 gethostbyaddr:該函數(shù)取回與網(wǎng)絡地址相關的主機信息。 gethostbyname:從主機數(shù)據(jù)庫中取回與主機名相關的主機信息。 WSASendTo:該函數(shù)給指定目的地發(fā)送數(shù)據(jù),在適用的地方使用重疊I/O。 OpenClipboard:打開剪切板并阻止其它應用程序更改剪切板內(nèi)容,成功調(diào)用該函數(shù)后應該調(diào)用CloseClipboard函數(shù)。 EmptyClipboard:該函數(shù)清空剪切板并釋放剪切板數(shù)據(jù)的句柄, 然后該函數(shù)把剪切板的所有權分配給當前打開剪切板的窗口。 GlobalAlloc:該函數(shù)從堆中分配指定數(shù)量的字節(jié),Windows內(nèi)存管理不提供獨立的本地堆和全局堆。參數(shù)GMEM_MOVABCE分配可移動的內(nèi)存,在物理內(nèi)存中內(nèi)存塊不可移動,但在默認堆中可以移動,返回值為內(nèi)存對象句柄。使用GlobalLock函數(shù)可以把句柄轉(zhuǎn)換為指針。 GlobalLock函數(shù)鎖住一個全局內(nèi)存對象并返回一個指向該對象內(nèi)存塊第一個字節(jié)的指針。 每個內(nèi)存對象的內(nèi)部數(shù)據(jù)結(jié)構包括初始值為零的鎖定計數(shù),對于可移動內(nèi)存對象來說,GlobalLock函數(shù)使計數(shù)加一,GlobalUnlock函數(shù)使計數(shù)減一。鎖定的內(nèi)存不能移動或廢棄除非使用函數(shù)重新分配內(nèi)存對象,鎖定內(nèi)容對象的內(nèi)存塊直到計數(shù)減為零才解除鎖定,這時該內(nèi)存可以移動或廢棄了。 SetClipboardData:該函數(shù)把數(shù)據(jù)放在指定剪切板格式的剪切板上。 CloseClipboard:關閉剪切板。 IsClipboardFormatAvailable:該函數(shù)判斷剪切板是否包含指定格式的數(shù)據(jù)。 GetClipboardData:該函數(shù)以指定格式取回剪切板的數(shù)據(jù)。 SECURITY_ATTIBUTES:該結(jié)構包含一個對象的安全描述符并說明由這個結(jié)構返回的句柄是否可繼承。 CreatePipe:該函數(shù)創(chuàng)建一個匿名管道,返回管道的讀寫末端句柄。 STARTUPINFO:該結(jié)構與CreateProcess函數(shù)一起使用來說明新進程窗口工作站,桌面,標準句柄和主窗口外觀。 PROCESS_INFORMATION:該結(jié)構與CreateProcess一起使用,該結(jié)構包含新創(chuàng)建進程和它主進程的信息,如果函數(shù)調(diào)用成功,當用完它們后,要調(diào)用CloseHandle函數(shù)關閉hProcess和hThread句柄。 ZeroMemory:該宏將一塊內(nèi)存填充為零。 GetStdHandlle:該函數(shù)取回標準輸入,標準輸出,標準錯誤設備的句柄。 CreateProcess:該函數(shù)創(chuàng)建一個新進程和它的主線程,新進程運行調(diào)用進程的安全上下文中指定的可執(zhí)行文件。 (12) WriteFile:該函數(shù)向文件指針說明的位置的文件寫入數(shù)據(jù)。 重寫OnInitialUpdate函數(shù)執(zhí)行任何文檔所需信息的一次性初始化。 CreateNamedPipe:該函數(shù)創(chuàng)建一個命名管道實例并返回后來管道操作的句柄。一個命名管道服務器進程使用該函數(shù)創(chuàng)建指定命名管道的第一個實例,并創(chuàng)建它的基本屬性或創(chuàng)建已存在命名管道的一個新實例。 OVERLAPPED:該結(jié)構包含在異步或重疊輸入和輸出(I/O)中使用的信息。 ConnectNamedPipe:該函數(shù)使一個命名管道服務器進程等待客戶進程連接到命名管道實例上,通過調(diào)用CreateFile或CallNamedPipe函數(shù)完成客戶進程連接。 WaitNamedPipe:該函數(shù)等待直到超時間到或指定命名管道實例可用于連接。 CreateMailSlot:該函數(shù)創(chuàng)建一個指定名稱的郵槽并返回一個可以用來在郵槽上執(zhí)行操作的郵槽服務器句柄。 COleControl::InvalidateControl:調(diào)用該函數(shù)強迫控件重繪自身。 屬性在Automation中設置。 COleControl::GetBackColor:返回值說明當前背景顏色值為OLE_COLOR值,調(diào)用TranslateColor將該值轉(zhuǎn)換為COLORREF值。COleControl::GetForeColor:執(zhí)行庫存前景色屬性的Get函數(shù)。 CDC::Setbkcolor:設置文本背景色。 COleControl::SetBackColor:設置BackColor屬性值。 DECLARE_PROPPAGEID:聲明OLE控件提供一個顯示它的屬性的屬性頁列表。 COleControl::BoundProperlyChange:信號通知綁定屬性值已經(jīng)改變。每次屬性值改變后必須調(diào)用該函數(shù),甚至在不使用屬性Set方法作改動的情況下。要特別注意被影射到成員變量的綁定屬性,每次該變量改變時,必須調(diào)用BoundProperlyChange函數(shù)。 AmbientUserMode: (運行時)用戶模式返回非0,設計時為0。 CDocument::SetModifiedFlag:在對文檔做完任何更改后調(diào)用該函數(shù)。 COleControl::SetModifiedFlag:改為控件更改狀態(tài)。當作出的改動影響控件的持久狀態(tài)時調(diào)用該函數(shù)。 GetForegroundWindow(void):該函數(shù)返回前景窗口句柄,即用戶當前操作的窗口。 其它程序訪問動態(tài)鏈接庫函數(shù),已經(jīng)被導出的函數(shù) 查看:將DLL所在路徑復制到命令提示符中,使用dumpbin vcvars32.bat Dumpbin -exports *.dll 要導出函數(shù),在DLL的函數(shù)前加_declspec(dllexport)。 名字改編 將輸入庫文件(.lib)和(.dll)文件復制到應用程序文件夾中,不包含實際代碼,為鏈接提供信息,以便在可執(zhí)行文件(.exe)中建立動態(tài)連接時要用到的重定位表 輸入信息: Dumpbin imports *.exe 調(diào)試MFC42D.DLL 發(fā)布MFC42.DLL VS6.0 Depcodency Wacker查看依賴哪些DLL _declspec (dllimport)包含在頭文件中說明從*.lib中引入的函數(shù),供給調(diào)用動態(tài)連接庫的客戶端服務,也可為DLL自身使用加入。 #ifdef DLL1_API #else #define DLL1_API _declspec(dllimport) #enelif DLL源程序中:#define DLL1_API _declspec(dllimport) 如只想導出類的一個函數(shù),將DLL1_API放在函數(shù)前 對不同編譯器,輸出函數(shù)名不要改變, #define Dll1_API Exten “C” _delspec(dllimport) Extern “C”不能導出類成員函數(shù),只能導出全局函數(shù). _stdcall標準調(diào)用約定,默認為C調(diào)用約定。 為Delphi訪問時, 用模塊定義文件解決名字改編問題 (.def)加入到項目中。 LIBRARY DLL2指定動態(tài)鏈接庫內(nèi)部名稱 EXPORTS隱式鏈接表示連動本鏈接庫中導出哪些函數(shù),為這些函數(shù)指出的符號名 動態(tài)加載:Load Library得到導出函數(shù)地址: GetProcAddress Typedef定義類型 (DLIMAIN) FreeLibrary不需要訪問動態(tài)鏈接庫時調(diào)用。 CRuntimeClass:每個從CObject派生出的類都與一個CRuntimeClass結(jié)構相關,該結(jié)構可以用來獲得關于運行時一個對象或它的基類的信息。當需要對函數(shù)參數(shù)的額外類型檢查時判斷一個對象是否在運行時類很重要。該結(jié)構提供相關C++對象的信息,例如指向基類的CRuntimeClass的指針及相關類的ASCII類名。該結(jié)構也執(zhí)行能用來動態(tài)創(chuàng)建對象、使用常見名說明對象類型及判斷相關類是否從指定類派生而來的各種函數(shù)。 CCreateContext:框架調(diào)用該結(jié)構當它創(chuàng)建框架窗口和與文檔相關的視時。創(chuàng)建窗口時,該結(jié)構的值提供用于連接構成文檔的部件和視的數(shù)據(jù)。該結(jié)構包含指向文檔、框架窗口、視和文檔模板的指針,還包含指向標識創(chuàng)建視類型的CRuntimeClass結(jié)構的指針。運行時類信息和當前文檔指針用來動態(tài)創(chuàng)建一個新的視。 STATIC_DOWNCAST:該宏將pObject影射成指向class_name對象的指針。 CreateView:調(diào)用該函數(shù)在框架內(nèi)創(chuàng)建視。 SetWindowHookEx:該函數(shù)把一個應用程序定義的hook安裝到hook鏈中(放在前面)。應該按裝一個hook過程監(jiān)視系統(tǒng)中確定類型的事件。這些事件可與一個特定線程或相同桌面下調(diào)用縣城的所有線程相關。要屏蔽所有線程的消息,在動態(tài)鏈接庫中實現(xiàn)hook編碼。 GetCurrentTreadID:返回當前線程ID。 CallNextHookEx:該函數(shù)在當前hook鏈的下一個hook過程中傳遞hook消息。 UnhookWindowsHookEx:該函數(shù)刪除由SetWindowHookEx函數(shù)安裝在hook鏈中的一個hook過程。 GetModuleHandle: 如果該文件應經(jīng)被影射到調(diào)用線程的地址空間后,該函數(shù)取回指定實例的實例句柄。返回句柄不是全局的或可繼承的,不能被復制或被其它線程訪問。 |
|
|