VC基本函數一覽

VC基本函數一覽
2007-03-16 23: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: 如果該文件應經被影射到調用線程的地址空間後,該函數取回指定實例的實例句柄。返回句柄不是全局的或可繼承的,不能被複制或被其它線程訪問。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章