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