VC基本函式一覽

眉頭一皺計上心來發表於2011-12-12

CSize:說明一個矩形的高和寬,呼叫CDC::GetTextExtent成員函式計算使用當前字型的一行文字的高和寬決定的尺寸。

CString::LoadString:把一個由nID標識的字串資源讀取到現有的CString物件中。

CDC::BeginPath:開啟裝置上下文中的路徑,路徑開啟後,應用程式可以開始呼叫GDI畫圖函式定義位於路徑上的點。

CDC::SelectClipPath:選擇當前路徑作為裝置上下文的剪下區域,通過使用指定模式與任何現有的剪下區域合併(所有繪製工作都只作用於該剪下區域)。

CDC::GetTextMetrics:取回使用屬性裝置上下文的當前字型尺寸。

CDC::CreateSolidCaret:為系統建立實心矩形游標並宣告。

CDC::CreateCaret:為系統游標建立一個新圖形,使用Show Caret顯示游標。

CDC::SetTextColor:把文字顏色設定為指定色。

CDC::GetBkColor:返回當前指定顏色。

CDC::SetCaretPos:設定游標位置

CDC::DrawText:呼叫該成員函式在給定矩形中輸出格式化文字,可輸出多行文字並規定對齊方式和使用何種風格。

(1)

CMenu::CheckMenuItem:從彈出選單的選單項上新增或刪除複選標記。

CMenu::SetDefaultItem:為指定選單設定預設選單項。

Cwnd::GetMenu():取回一個指向該視窗選單的指標。

Cwnd::GetSubMenu():取回彈出選單的CMenu類物件。

SDK GetSystemMetrics:取回各種系統尺寸和系統配置設定。所有由GetSystemMetrics函式取回的尺寸都以象素為單位。

CMenu::SetMenuItemBitmaps:為選單項新增一幅指定點陣圖

CMenu::EnableMenuItem:啟用、取消或變灰一個選單項。

CWnd::SetMenu:把當前選單設定為指定選單。

::DestroyMenu:該函式銷燬指定選單並釋放該選單佔用的記憶體。

CMenu::Detach:把一個CMENU物件與一個Windows選單分開並返回該控制程式碼。

CCMDUI::m_nIndex:選單項,工具欄或其它由CCMDUI物件表示使用者介面物件的索引。

CCMDUI::m_nID:選單項,工具欄或其它由CCMDUI物件表示使用者介面物件的ID。

CCMDUI::Enable:該函式使選單項有效或無效。

CWnd::OnContextMenu:當使用者在該視窗點選右鍵時由框架呼叫。可以使用TrackPopupMenu顯示上下文選單處理這條訊息。

CWnd::TrackPopupMenu:在指定位置顯示浮動彈出視窗並跟蹤彈出選單的選單項。

CWnd::Clienttoscreen:把顯示器上給定的點或矩形的客戶座標轉換成螢幕座標。

CPoint::Offset增加Cpoint物件的x和y成員的值。

CWnd::Getstyle:返回當前視窗式樣。

CMenu::CreatePopupMenu:建立一個彈出選單並與Cmenu物件聯絡起來。

CMenu::AppendMenu:在選單的末尾新增一個新選單項。

CMenu::Insertmenu:往指定位置插入一個選單,其後的選單項向後移。

CMenu::DeleteMenu:從選單中刪除一個選單項。

CWnd::OnCommand:當使用者選擇一個選單項時,或子控制元件傳送通知訊息時,再或當快捷鍵鍵擊時框架呼叫這個成員函式。

CFrameWnd::GetActiveView:呼叫該函式獲得與框架視窗相關的活動視窗。

CStringArray:支援Cstring物件的陣列的集合類。

CWnd::DrawMenuBar:重畫選單欄。當該視窗已經建立後選單欄發生變化時呼叫該成員函式。

(2)

CDialog::OnInitDialog:呼叫該成員函式對WM_INITDIALOG訊息做出反應。當Create, CreateIndirect或DoModal呼叫時這條訊息傳送到對話方塊,這些呼叫發生在對話方塊視窗剛要顯示之前。當對話方塊初始化時如果需要執行特定處理重寫這個成員函式。

CButton::Create:建立一個按鍵控制元件並將其與CButton物件關連起來。

CWnd::GetDlgItem:取回對話方塊或其它視窗中指定控制元件或子視窗的指標。

CWnd:GetWindowText:將Cwnd標題複製到由lpszstringbuf指向的子符串中。

C:   atoi:將一個字串轉化為整數。

itoa:將一個整數轉化為字串。

CWnd::SetWindowText:將視窗標題設定為指定文字。

CWnd::GetDlgItemText:呼叫這個成員函式取回與對話方塊中某個控制元件相關的標題或文字。

CWnd::SetDlgItemText:設定一個視窗或對話方塊中的控制元件的標題或文字。

CWnd::GetDlgItemInt:取回由nID標識控制元件的文字。

CWnd::SetDlgItemInt:把對話方塊中給定控制元件的文字設定為代表指定整數值的字串。

CWnd::UpdateData:呼叫該函式初始化對話方塊的資料(FALSE)或取回並更新對話方塊資料(TRUE)。

::SendMessage:該函式將指定訊息發至一個或多個視窗,不立即返回。

WM_GETTEXT:由應用程式傳送該訊息把與視窗相關的文字複製到呼叫者提出的字串中。

CWnd::SendDlgItemMessage:給控制元件傳送一條訊息。使用該函式等同於獲得指定控制元件的CWnd*並呼叫SendMessage成員函式。

EM_SETSEL:這個訊息選中編輯控制元件的字元範圍。

CWnd::SetFocus:宣告輸入焦點,返回值為指向前一個擁有輸入焦點的視窗的指標。

CRect::IsRectNull:判斷CRect的上,左,下,右是否都為0。

CRect::IsRectEmpty:判斷CRect是否為空。

CWnd::GetWindowRect:取回視窗邊界尺寸。

CWnd::SetWindowPos:呼叫這個成員函式改變彈出視窗、頂層視窗和子視窗大小,位置和z序。

CWnd::GetNextWindow:搜尋視窗管理器列表中下一個或前一個視窗。

CWnd::GetWindow:返回所需視窗的指標。

CWnd::GetNextDlgTabItem:取回由WS_TABSTOP式樣產生的第一個控制元件的指標,或指定該控制元件前面的或後面的指標。

(3)

CFont::CreatePointFont:該函式可以方便地建立指定字型名稱和大小的字型。

CPropertySheet:屬性表單由一個CPropertySheet物件和一個或多個CPropertyPage物件組成。先呼叫建構函式再呼叫DoModal或Create,與對話方塊操作類似。

如果建立嚮導,只需在DoModal前呼叫SetWizardMode即可。

啟用嚮導按鍵,呼叫從OnSetActive中呼叫,SetWizardButtons,使用標記(dwFlags)自定義功能和外觀。

在使用者填完嚮導最後一頁時,呼叫SetFinishText啟用完成按鍵。

CWnd::Invalidate():當下條WM_PAINT訊息發生時,客戶區域標記要重繪。CWnd更新區域非空且應用程式訊息佇列中沒有其它訊息時Windows傳送WM_PAINT訊息。如果引數為TRUE當呼叫BeginPaint成員函式時將清除背景。

CPropertySheet::AddPage將提出的屬性頁增加到表單最右端。

CPropertyPage::OnSetActive:該成員函式由框架視窗呼叫,當使用者選擇某一頁面時,且該頁面變為活動頁面。

CPropertyPage::OnWizardNext:當使用者點選向導上的Next的按鍵時由框架視窗呼叫該成員函式。

重寫CDialog::OnInitDialg的意圖:初始化對話方塊控制元件。

CComboBox::SetCurSel:在組合框列表框中選擇一個字串。

CPropertyPage::OnWizardFinish:使用者點選向導的完成按鈕時框架呼叫該成員函式。

CCombobox::GetCurSel:呼叫該函式判斷組合框中選擇哪項,以0為索引。

CCombobox::GetLBText:從組合框的列表框中得到字串。

(4)

::SetWindowLong:該函式更改指定視窗屬性。

某些資料被隱藏,因此所做的更改直到呼叫SetWindowPos函式才生效。

如果使用GWL_WNDPROC替換視窗過程,視窗過程必須遵從WindowProc:回撥函式介紹中指定的步驟。

返回值為前一個指定的32位整形值。

::SetClassLong:該函式將特定偏移量的指定的32位(Long)值替換為指定視窗屬於那個類的WNDCLASS結構的額外類記憶體。

AfxGetInstanceHandle:該函式取回當前應用程式的例項控制程式碼。

MAKEINTRESOURC:該巨集把一個整形值轉換為與資源管理函式相容的資源型別,該巨集用於替換包含資源名的字串。

CTime:代表絕對時間和日期。

GetCurrentTime:返回當前時間的物件。

Format將CTime的物件轉換為格式化字串。

CStatusBar::CommandToIndex:獲得指定ID的指示符索引。

CStatusBar::SetPaneInfo:將指定指示符窗格設定為新的ID,式樣和寬度。

CStatusBar::SetPaneTex:呼叫該函式把窗格文字設定為lpsznewText指定的字串。

CStatusBar::GetItemRect把由nIndex指定的指示符座標複製到lprect指向的結構中。

CProgressCtrl:提供Windows一般進度條控制元件的功能。

CProgressCtrl::Create:建立一個進度條控制元件並把它與CProgressCtrl物件聯絡起來。

CProgressCtrl::SetPos:設定進度條控制元件當前位置為nPos指定位置並重畫進度條表現新位置。

AfxRegisterWndClass:允許註冊自定義視窗類。

CProgressCtrl::StepIt:按增量由進度條當前位置前進並重畫進度條反應新位置。

CWnd::IsWindowVisible:判斷給定視窗可視狀態。

CFramewnd::RecalcLayout當標準控制條在顯示/隱藏切換時或框架視窗更改大小時由框架呼叫。

CFrameWnd::DockControlBar:使一個控制條停靠到框架視窗上。

CFraneWnd::ShowControlBar:呼叫該成員函式顯示或隱藏控制條。

CWnd::OnPaint:當Windows或應用程式請求重繪應用程式視窗一部分時,框架呼叫該函式。

CWnd:: MoveWindow:更改視窗位置和尺寸。

CWnd::GetDescendantWindow:呼叫該函式找出由指定ID說明的子視窗。

CFrameWnd::SetMessagText:呼叫該函式把一串字元放在ID為0的狀態列窗格上。

CFrameWnd::GetMessagBar:呼叫該函式獲得狀態列指標。

(5)

基於UDP協議的網路聊天程式實現步驟:

一 非阻塞模式套接字:

1 在CWinApp的派生類中建立解構函式,用於終止WS_32.DLL的使用。

2 在其InitInstance函式中加在套接字型檔。

3 在CDialog的派生類中建立解構函式,用於關閉套接字。

4 自定義初始化套接字成員函式和成員變數(CSocket)並初始化。

5 在該成員函式中進行繫結並請求套接字基於訊息通知的網路事件(WSAAsynSelect),要判斷這回值情況。

6 對使用者自定義訊息進行訊息對映。(手工)

7 在其實現函式中判斷引數(LPARAM)的低字是否為所需網路事件:在其中進行接收資料。

8 對傳送按鍵進行訊息對映,實現傳送功能。

二 阻塞模式套接字使用多執行緒方式:

1 使用AfxSocketInit全域性函式載入套接字版本1.1的套接字型檔。

2 在CDialog的派生類中自定義初始化套接字成員函式和成員變數(CSocket)。

3 在該成員函式進行繫結並判斷返回值情況。

4 在InitDialog成員函式中再建立一個執行緒用於接收資訊,然後關閉執行緒控制程式碼。定義一個結構體可以傳遞給執行緒多個引數,使用完後釋放記憶體。

5 (自定義)ThreadProc函式用於說明執行緒起始地址的指標,其引數為傳遞給使用建立執行緒函式的lpParam引數的函式的執行緒資料。

6 在該函式中接收資料將格式的資料寫入字串。

7 將一個與產生特定視窗的執行緒的相關的訊息(字串)放入訊息佇列中將訊息傳送出去,不等待執行緒處理立即返回。

8 對訊息進行訊息對映,(編輯框)。手工

9 對傳送按鍵進行訊息對映,傳送資料。

(6)

程式間通訊四種方式:剪下板、匿名管道、命令管道、郵槽。

(傳送)1 開啟剪下板,清空剪下板,呼叫GlobalAlloc為指定字串從堆中分配指定數量的位元組數,再呼叫GlobalLock函式鎖定一個全域性記憶體物件並返回一個指定該物件記憶體塊第一個位元組的指標,接著呼叫GlobalUnlock函式減少用GMEM_MOVEABLE分配的記憶體物件相關的鎖定計數。每個記憶體物件的內部資料結構包括一個初始值為零的鎖定計數,對於可移動記憶體物件GlobalLock函式將計數值加一,而GlobalUnlock函式將其減一,計數減小到零,才可以被移動或丟棄然後設定剪下板資料,再關閉剪下板。

(接收)2 開啟剪下板呼叫IsClipboardFormatAvailable函式檢視剪下板是否包含指定格式的資料,再呼叫GetClipboardData函式得到控制程式碼,呼叫GlobalLock和GlobalUnlock,設定剪下板資料,關閉剪下板。

AP:1先建立兩個控制程式碼用於讀和寫,在視類中初始化,在解構函式中關閉控制程式碼。

建立選單項,建立管道,讀資料,寫資料,然後命令響應

呼叫建立管道函式建立管道給安全屬性結構賦值,該結構決定返回控制程式碼能否被子程式繼承,然後建立子程式,對STARTINFO結構體賦初值,使用ZeroMemory巨集,設定狀態dwFlags,這裡使用標準控制程式碼。

如果建立失敗,關閉讀寫控制程式碼,並將其設定為零,成功關閉PROCESS_INFORMATION結構體控制程式碼。

讀資料,使用Readfile,寫資料,使用 WriteFile寫入資料。

2 子程式建立選單項,讀資料,寫資料,命令響應。

手工增加成員函式,視窗建立成功後,第一個呼叫OnInitialUpdate虛擬函式,在其中對讀寫控制程式碼賦值,用GetStdHandle函式。

NP:1增加管道控制程式碼,初始化,關閉控制程式碼。

建立選單項,建立管道,讀資料,寫資料,命令響應。

構造命名管道,該函式建立一個命名管道例項,返回一個後來管道操作控制程式碼。

建立一個事件物件,再呼叫ConnectNamedPipe函式使命名管道伺服器程式等待客戶程式,連線到命名管道例項上,對OVERLAPPED結構體賦初值,判斷連線是否失敗。

呼叫WaitforSingleObject函式,當指定物件處於有訊號狀態或超時間隔到達時返回,判斷是否失敗。

2、建立選單項,連線管道,讀資料,寫資料,進行命令響應。

呼叫WaitNamedPipe函式等待直到超時時間到或指定命名管道例項可用於連線,呼叫CreateFile開啟命名管道。

ReadFile, WriteFile

(7)

MS:1、建立選單項,接收資料,命令響應,(伺服器)。

建立郵槽函式呼叫取檔案,關閉控制程式碼。

2、建立選單項,傳送資料,命令響應(客戶)。

使用CreateFile開啟郵槽,WriteFile寫入資料,

CDC::SetBkColor:設定文字背景色。

CDC::SetBkMode:設定背景模式(透明,不透明)。

COleControl::SetBackColor:設定庫存背景色屬性值。

(8)

CWinAPP::LoadStdProfileSettings:在InitInstance成員函式內呼叫該函式啟用並載入最近使用檔案的列表和上次預覽狀態。

CBitmap::GetBitmap:呼叫該成員函式取回CBitmap物件的訊息。

CDC::CreateCompatibleDC:建立一個與pDC指定裝置相容的記憶體裝置上下文。記憶體裝置上下文是代表顯示介面的記憶體塊,它可以用來在把圖形複製到記憶體裝置的實際裝置介面之前在記憶體中準備圖形。

CDC::BitBlt:從源裝置上下文把一幅點陣圖複製到當前裝置上下文

CDC::StretchBlt:從源矩形把一幅點陣圖複製到目的矩形,如果需要可以拉伸或壓縮點陣圖以適合目的矩形大小。

CDC::SetPixel:將指定點上的象素設定為crColor指明的顏色

CColorDialog:允許嚮應用程式中新增顏色選擇對話方塊。系統對話方塊

C::m_cc:CHOOSECOLOR型別的結構體,其成員儲存顏色選擇對話方塊的特徵和值。構造CColorDialog物件後,可以使用m_cc資料成員設定對話方塊各個方面,在呼叫DoModal前。

CFontDialog:允許嚮應用程式中新增字型選擇對話方塊。

CGdiObject::m_hObject:一個HANDLE包含與該物件相關的HBITMAP,HRGN,HBRUSH,HPEN,HPALETTE或 HFONT。

CGdiObject::DeleteObject:通過釋放與Windows GDI物件相關的所有系統儲存從記憶體中刪除相關的該物件。

CFont::CreateFontIndirect:用lpLogFont指向的LOGFONT結構給出的特徵初始化CFont物件。

CWnd::OnEraseBkgnd:當CWnd物件背景需要清除時框架呼叫該函式。呼叫它為繪圖準備一塊無效區域。

CWnd::ScreenToClient:將顯示器上指定點或矩形的螢幕座標轉換為客戶座標。

CWnd::OnCtlColor:當子控制元件將要顯示時框架呼叫該成員函式。

CWnd::GetDlgCtrlID:返回任何子視窗的視窗或控制元件ID。

CDC::SetTextColor:將文字顏色設定為指定顏色。

CDC::Drawtext:呼叫該成員函式格式化給定矩形中的文字。

CButton::DrawItem:當自畫按鍵的可視方面改變時由框架呼叫。

SDK DrawFrameControl:該函式按指定型別、形式樣繪製框架控制元件。

CRect::CopyRect:將lpSrcRect矩形複製到CRect。

SDK DrawFocusRect:該函式繪製一個用來標識該矩形擁有焦點式樣的矩形。

CDC::Draw3dRect:呼叫該函式繪製一個三維矩形。

SDK GetSysColor:該函式取回指定顯示元素的當前顯色。

CView::OnInitialUpdate:視第一次與文擋關聯後,但在視被顯示前由框架呼叫。

CView::OnDraw:由框架呼叫粉刷文擋的圖象。

CWnd::OnPaint:當Windows或應用程式請求重繪應用程式視窗一部分時由框架呼叫。

CMetaFileDC: 執行一個Windows原始檔,其中包含一系列可以產生所需圖形或文字的圖形裝置介面命令。要執行Windows原始檔, 首先建立CMetaFileDC物件,呼叫CMetaFileDC建構函式,然後呼叫Create成員函式,建立Windows原始檔裝置上下文並使之與物件相關聯。

Close成員函式關閉原始檔裝置上下文並返回原始檔控制程式碼,然後刪除CMetaFileDC物件不在需要原始檔時,用DeleteMetaFile函式從記憶體中刪除它。

CPtrArray:支援空指標的陣列。

CDC::PlayMetaFile:使用原始檔控制程式碼可以用來反覆播放原始檔。

CBitmap::CreateCompatibleBitmap:初始化一個與pDC說明的裝置相相容的點陣圖。

CView::OnPrepareDC:在螢幕顯示呼叫OnDraw成員函式之前和列印或列印預覽每頁之間呼叫OnPrint成員函式之前由框架呼叫。

CDC::DpToLp:把裝置座標轉換為邏輯座標。

可以認為CDC所有成員函式都以邏輯座標為引數,但和CRect有關的函式例外。可以認為CWnd的成員函式都以裝置座標作為引數。要以邏輯座標儲存資料。

CScrollView::SetScrollSizes:當視要更新時呼叫。在重寫的OnUpdate成員函式中呼叫調整滾動特性。

SDK CopyMetaFile:該函式將Windows格式原始檔複製到指定檔案。

SDK GetEnhMetaFile:該函式建立一個儲存在指定檔案中標識增強格式原始檔的控制程式碼。

SDK WriteProfileString:該函式把一個字串複製到win.ini檔案的指定部分。

SDK GetProfileString:該函式取回與win.ini檔案指定部分的與某個鍵相關的字串。

CFileDialog:封裝了windows普通檔案對話方塊。

CFileDialog::GetFileName:呼叫該函式取回輸入對話方塊的檔名。

SDK RegCreateKey:呼叫該函式建立指定的註冊鍵,如果在登錄檔中存在該鍵,就開啟它。

RegSetValue:該函式設定預設的資料或指定註冊鍵無名值,資料必須是字串。

RegSetValueEx:該函式設定註冊鍵下指定值的資料和型別。

RegCloseKey:該函式釋放指定註冊鍵的控制程式碼。

RegQueryValue: 該函式取回與指定註冊鍵預設或無名值相關類的資料。

(9)

SDK RegOpenKey:該函式開啟指定註冊鍵。

IMPLEMENT_SERIAL:產生有執行時訪問權的動態CObject派生類的類名的必要C++ 程式碼繼承圖表的位置。該巨集用於當從CObject繼承一個可序列化的類時定義所需的各種函式。

DECLARE_SERJAL:巨集用於宣告支援串所化的類,產生一個可以被序列化的CObject派生類的必要C++標頭檔案程式碼。

從文擋中讀物件或將物件寫入文擋中。

使用CArchive::IsLoading 或CArchive::IsStoring判斷文件是載入還是儲存。

CDocument::OnNewDocument:由框架呼叫作為FileNew命令的一部分。這個函式的預設執行是呼叫DeleteContents成員函式確保文件為空並標記新文件為空,重寫該函式初始化新文件的資料結構。

如果使用者在SDI應用程式中選擇FileNew命令,框架使用該函式重新初始化現有的文件,不是建立新的。

CDocument::SetTitle:呼叫該函式說明文件的標題。(字串顯示在框架視窗的標題欄中)

CDocument::GetFirstViewPosition:呼叫該函式獲得與文件關聯的視列表中第一個視的位置。

CDocunment::GetNextView:呼叫該函式在文件的視中迴圈,返回由rPosition標識視的指標。

CArchive:允許以二進位制形式永久的儲存物件的複雜網路。

CDocument::Deletecontents:由框架呼叫刪除文件中資料而不銷燬CDocument物件自身。在該文件要被銷燬之前呼叫,也被呼叫確保在重新使用前文件為空。

(Windows Sockets)   bind:該函式與套接字的本地地址相關。

在呼叫Connect或Listen函式之前這個函式用在一個斷開的套接字上。該函式可以用來繫結面向連線(流式)或面向無連線的(資料包)套接字。當呼叫(Windows Sockets) Socket函式建立套接字時,它存在於一個名稱空間(地址族)中但並沒有給它分配名字。通過給無名套接字分配一個本地名使用Bind函式建立該套接字的本地聯合。

sockaddr:該結構根據所選的協議不同而不同,除了Sa_family引數,sockaddr其它成員以網路位元組序表示,sa_family必須是AF_INET。

在TCP/IP中,可以用 sockaddr_in 結構替換sockaddr,以方便填寫地址資訊。

Sockaddr_in:在Internet地址族中,該結構由Windows套接字使用來說明與套接字連線的本地或遠端端點地址。如果該函式呼叫成功返回0,失敗則返回SOCKET_ERROR,由WSAGetLastError返回。將IP地址指定為INADDR_ANY, 允許套接字向任何分配給本地機器的IP地址傳送或接收資料。

將地址指定為INADDR_ANY, 允許一個獨立應用接受發自的多個介面的迴應。如果只想讓套接字使用多個IP地址的一個,就必須指定實際地址,可使用inet-addr()函式,該函式需要一個指定以點分十進位制格式表示IP地址的字串做為其引數,並返回一個適合分配給S_ADDR的u_long型別的數值。inet_ntoa()函式完成相反轉換,接受in_addr結構體型別引數,返回以點分十進位制格式表示的IP地址字串。

htonl:該函式將一個主機的u_long型別成員轉換為TCP/IP網路位元組序。

htons: 該函式將一個主機的u_Short型別成員轉換為TCP/IP網路位元組序。      

listen:該函式把一個套接字設定為處於監聽到來的連線狀態。

accept:該函式允許在套接字上接受到來的連線的請求。

send:該函式在處於已連線狀態的套接字上傳送資料。

recv:該函式從連線的或繫結的套接字接收資料。

closesocket:關閉現在使用的套接字。

WSADATA結構內含關於Windows套接字型檔資訊。

WSACleannp函式終止WS2_32.DLL的使用。

recvfrom:該函式接收資料包並儲存源地址。

sendto:該函式將資料傳送到指定目的地。

Server:基於TCP(面向連線)的Socket程式設計

1、               建立套接字(socket)

2、               將套接字繫結到本地地址和埠上(bind)

3、               將套接字設為監聽模式,準備接收客戶請求(listen)

4、               等待客戶請求到來,請求到來後,接受連線請求,返回一個新的對應於此次連線的套接字(accept)

5、               用返回的套接字與客戶端進行通訊(send/recv)

6、               返回,等待另一客戶請求

7、               關閉套接字

Client:

1、               建立套接字(socket)

2、               向伺服器發出連線請求(connect)

3、               和伺服器進行通訊(send/recv)

4、               關閉套接字

基於UDP(面向無連線)Socket的程式設計

Server:伺服器端(接收端)程式:

1、               建立套接字(Socket)

2、               將套接字繫結到一個本地地址和埠上(bind)

3、               等待接收資料(recvfrom)

4、               關閉套接字

客房端Client:(傳送端)程式

1、               建立套接字(socket)

2、               向伺服器傳送資料(sendto)

3、               關閉套接字

(10)

AfxSocketInit:在CWinAPP::InitInstance中呼叫該函式初始化Windows套接字。載入套接字1.1版本。

CreateThread:該函式建立一個執行緒在呼叫執行緒的程式的虛擬地址空間中執行。

ThreadProc:該函式是應用程式定義的函式,用作執行緒的起始地址。

執行緒物件存在於系統中直到執行緒終止,通過呼叫CloseHandle關閉它的所有控制程式碼。

socket:該函式建立一個與指定服務提供者繫結的套接字。

CIPAddressCtrl:提供Windows一般IP地址控制元件功能。

CIPAddressCtrl::GetAddress:取回IP地址控制元件中完整地址值。

CreateEvent:該函式建立或開啟一個命名或無名事件物件。

如果為手工重置,該函式產生一個手工重置事件物件,需要使用ResetEvent函式把事件狀態設定為無訊號,如果為自動重置,產生一個自動重置事件物件,在單一等待執行緒釋放後,系統自動把事件狀態設定為無訊號。

使用SetEvent函式將一個事件物件設定為有訊號狀態。

WaitForSingleObject:當指定物件處於有訊號狀態或超時時間到時該函式返回。

Sleep:該函式掛起當前執行緒的執行(最小為指定間隔)。

該函式使一個執行緒放棄它剩餘的時間片在指定最小毫秒間隔內變為不可執行,完後執行緒繼續執行。

InitializeCriticalSection:該函式初始化一個關鍵程式碼段物件。

在初始化關鍵程式碼段物件後,程式的執行緒可以在EnterCriticalSection, LeaveCriticalSection函式中說明該物件提供共享資源的互斥訪問權。

使用完關鍵程式碼段後,呼叫DeleteCriticalSection函式。

EnterCriticalSection:該函式等待指定關鍵程式碼段物件的所有權,當呼叫的執行緒同意所有權時函式返回。

LeaveCriticalSection:該函式釋放指定關鍵程式碼段物件的所有權。

WSACleanup:終止WS2_32.DLL的使用。

WSASocket:該函式建立一個與指定傳送服務提供者繫結的套接字。

WSAAsyncSelect:該函式請求套接字網路事件的基於Windows訊息通知。該函式用於請求當它探測到lEvent引數指定的任意網路事件時,WS2_32.DLL應該傳送一條訊息到hWnd視窗。

(11)

當命名的網路事件之一發生在指定套接字時,應用程式視窗hWnd接收訊息wMsg。引數wParam說明套接字在哪個網路事件上發生的,lParam低字說明發生的網路事件,lParam的高字包含錯誤程式碼。

WSABUF結構可以完成資料緩衝區的建立或操作。

WSARecvFrom:接收一個資料包並儲存源地址。

hostent結構由函式使用儲存指定主機的資訊,應用程式不能更改其內容或釋放其成員。

gethostbyaddr:該函式取回與網路地址相關的主機資訊。

gethostbyname:從主機資料庫中取回與主機名相關的主機資訊。

WSASendTo:該函式給指定目的地傳送資料,在適用的地方使用重疊I/O。

OpenClipboard:開啟剪下板並阻止其它應用程式更改剪下板內容,成功呼叫該函式後應該呼叫CloseClipboard函式。

EmptyClipboard:該函式清空剪下板並釋放剪下板資料的控制程式碼,

然後該函式把剪下板的所有權分配給當前開啟剪下板的視窗。

GlobalAlloc:該函式從堆中分配指定數量的位元組,Windows記憶體管理不提供獨立的本地堆和全域性堆。引數GMEM_MOVABCE分配可移動的記憶體,在實體記憶體中記憶體塊不可移動,但在預設堆中可以移動,返回值為記憶體物件控制程式碼。使用GlobalLock函式可以把控制程式碼轉換為指標。

GlobalLock函式鎖住一個全域性記憶體物件並返回一個指向該物件記憶體塊第一個位元組的指標。

每個記憶體物件的內部資料結構包括初始值為零的鎖定計數,對於可移動記憶體物件來說,GlobalLock函式使計數加一,GlobalUnlock函式使計數減一。鎖定的記憶體不能移動或廢棄除非使用函式重新分配記憶體物件,鎖定內容物件的記憶體塊直到計數減為零才解除鎖定,這時該記憶體可以移動或廢棄了。

SetClipboardData:該函式把資料放在指定剪下板格式的剪下板上。

CloseClipboard:關閉剪下板。

IsClipboardFormatAvailable:該函式判斷剪下板是否包含指定格式的資料。

GetClipboardData:該函式以指定格式取回剪下板的資料。

SECURITY_ATTIBUTES:該結構包含一個物件的安全描述符並說明由這個結構返回的控制程式碼是否可繼承。

CreatePipe:該函式建立一個匿名管道,返回管道的讀寫末端控制程式碼。

STARTUPINFO:該結構與CreateProcess函式一起使用來說明新程式視窗工作站,桌面,標準控制程式碼和主視窗外觀。

PROCESS_INFORMATION:該結構與CreateProcess一起使用,該結構包含新建立程式和它主程式的資訊,如果函式呼叫成功,當用完它們後,要呼叫CloseHandle函式關閉hProcess和hThread控制程式碼。

ZeroMemory:該巨集將一塊記憶體填充為零。

GetStdHandlle:該函式取回標準輸入,標準輸出,標準錯誤裝置的控制程式碼。

CreateProcess:該函式建立一個新程式和它的主執行緒,新程式執行呼叫程式的安全上下文中指定的可執行檔案。

(12)

WriteFile:該函式向檔案指標說明的位置的檔案寫入資料。

重寫OnInitialUpdate函式執行任何文件所需資訊的一次性初始化。

CreateNamedPipe:該函式建立一個命名管道例項並返回後來管道操作的控制程式碼。一個命名管道伺服器程式使用該函式建立指定命名管道的第一個例項,並建立它的基本屬性或建立已存在命名管道的一個新例項。

OVERLAPPED:該結構包含在非同步或重疊輸入和輸出(I/O)中使用的資訊。

ConnectNamedPipe:該函式使一個命名管道伺服器程式等待客戶程式連線到命名管道例項上,通過呼叫CreateFile或CallNamedPipe函式完成客戶程式連線。

WaitNamedPipe:該函式等待直到超時間到或指定命名管道例項可用於連線。

CreateMailSlot:該函式建立一個指定名稱的郵槽並返回一個可以用來在郵槽上執行操作的郵槽伺服器控制程式碼。

COleControl::InvalidateControl:呼叫該函式強迫控制元件重繪自身。

屬性在Automation中設定。

COleControl::GetBackColor:返回值說明當前背景顏色值為OLE_COLOR值,呼叫TranslateColor將該值轉換為COLORREF值。COleControl::GetForeColor:執行庫存前景色屬性的Get函式。

CDC::Setbkcolor:設定文字背景色。

COleControl::SetBackColor:設定BackColor屬性值。

DECLARE_PROPPAGEID:宣告OLE控制元件提供一個顯示它的屬性的屬性頁列表。

COleControl::BoundProperlyChange:訊號通知繫結屬性值已經改變。每次屬性值改變後必須呼叫該函式,甚至在不使用屬性Set方法作改動的情況下。要特別注意被影射到成員變數的繫結屬性,每次該變數改變時,必須呼叫BoundProperlyChange函式。

AmbientUserMode: (執行時)使用者模式返回非0,設計時為0。

CDocument::SetModifiedFlag:在對文件做完任何更改後呼叫該函式。

COleControl::SetModifiedFlag:改為控制元件更改狀態。當作出的改動影響控制元件的持久狀態時呼叫該函式。

GetForegroundWindow(void):該函式返回前景視窗控制程式碼,即使用者當前操作的視窗。

其它程式訪問動態連結庫函式,已經被匯出的函式

檢視:將DLL所在路徑複製到命令提示符中,使用dumpbin vcvars32.bat

Dumpbin            -exports    *.dll

要匯出函式,在DLL的函式前加_declspec(dllexport)。

名字改編

將輸入庫檔案(.lib)和(.dll)檔案複製到應用程式資料夾中,不包含實際程式碼,為連結提供資訊,以便在可執行檔案(.exe)中建立動態連線時要用到的重定位表

輸入資訊:

Dumpbin    imports   *.exe

除錯MFC42D.DLL 釋出MFC42.DLL

VS6.0 Depcodency Wacker檢視依賴哪些DLL

_declspec (dllimport)包含在標頭檔案中說明從*.lib中引入的函式,供給呼叫動態連線庫的客戶端服務,也可為DLL自身使用加入。

#ifdef DLL1_API

#else

#define DLL1_API _declspec(dllimport)

#enelif

DLL源程式中:#define DLL1_API _declspec(dllimport)

如只想匯出類的一個函式,將DLL1_API放在函式前

對不同編譯器,輸出函式名不要改變,

#define Dll1_API

Exten   “C” _delspec(dllimport)

Extern   “C”不能匯出類成員函式,只能匯出全域性函式.

_stdcall標準呼叫約定,預設為C呼叫約定。

為Delphi訪問時, 用模組定義檔案解決名字改編問題 (.def)加入到專案中。

LIBRARY   DLL2指定動態連結庫內部名稱

EXPORTS隱式連結表示連動本連結庫中匯出哪些函式,為這些函式指出的符號名

動態載入:Load Library得到匯出函式地址: GetProcAddress

Typedef定義型別

(DLIMAIN)

FreeLibrary不需要訪問動態連結庫時呼叫。

CRuntimeClass:每個從CObject派生出的類都與一個CRuntimeClass結構相關,該結構可以用來獲得關於執行時一個物件或它的基類的資訊。當需要對函式引數的額外型別檢查時判斷一個物件是否在執行時類很重要。該結構提供相關C++物件的資訊,例如指向基類的CRuntimeClass的指標及相關類的ASCII類名。該結構也執行能用來動態建立物件、使用常見名說明物件型別及判斷相關類是否從指定類派生而來的各種函式。

CCreateContext:框架呼叫該結構當它建立框架視窗和與文件相關的視時。建立視窗時,該結構的值提供用於連線構成文件的部件和視的資料。該結構包含指向文件、框架視窗、視和文件模板的指標,還包含指向標識建立視型別的CRuntimeClass結構的指標。執行時類資訊和當前文件指標用來動態建立一個新的視。

STATIC_DOWNCAST:該巨集將pObject影射成指向class_name物件的指標。

CreateView:呼叫該函式在框架內建立視。

SetWindowHookEx:該函式把一個應用程式定義的hook安裝到hook鏈中(放在前面)。應該按裝一個hook過程監視系統中確定型別的事件。這些事件可與一個特定執行緒或相同桌面下呼叫縣城的所有執行緒相關。要遮蔽所有執行緒的訊息,在動態連結庫中實現hook編碼。

GetCurrentTreadID:返回當前執行緒ID。

CallNextHookEx:該函式在當前hook鏈的下一個hook過程中傳遞hook訊息。

UnhookWindowsHookEx:該函式刪除由SetWindowHookEx函式安裝在hook鏈中的一個hook過程。

GetModuleHandle: 如果該檔案應經被影射到呼叫執行緒的地址空間後,該函式取回指定例項的例項控制程式碼。返回控制程式碼不是全域性的或可繼承的,不能被複制或被其它執行緒訪問。

相關文章