lpctstr,font函數(shù)原型
lpctstr,font函數(shù)原型
正文
文章目錄
- lpctstrfont函數(shù)原型?
- 什么叫做對話框?
- 舉例說明window對象中常用的消息框函數(shù)?
- Create?
- 請舉一個腳本語言安防好是Python或Lua的例子?
lpctstrfont函數(shù)原型?
原型是:
HFONT CreateFont(int cHeight, //字體的邏輯高度
int cWidth, //字體的邏輯寬度
int cEscapement, //指定移位向量相對X軸的偏轉(zhuǎn)角度
int cOrientation, //指定字符基線相對X軸的偏轉(zhuǎn)角度
int cWeight, //設置字體粗細程度
DWORD bItalic, //是否啟用斜體
DWORD bUnderline, //是否啟用下劃線
DWORD bStrikeOut, //是否啟用刪除線
DWORD iCharSet, //指定字符集
DWORD iOutPrecision, //輸出安防
DWORD iClipPrecision, //剪裁安防
DWORD iQuality, //輸出質(zhì)量
DWORD iPitchAndFamily, //字體族
LPCSTR pszFaceName //字體名
);
什么叫做對話框?
對話框 一種次要窗口包含按鈕和各種選項通過它們可以完成特定命令或任務。
對話框與窗口有區(qū)別它沒有安防大化按鈕、沒有安防小化按鈕、不能改變形狀大小 對話框:是人機交流的一種方式用戶對對話框進行設置計算機就會執(zhí)行相應的命令。
對話框中有單選框、復選框等。
對話框的組成 對話框主要由兩部分組成。
對話框資源:可以使用對話框編輯器來配置對話框的界面如對話框的大小、位置、樣式對話框中控件的類型和位置等。
另外我們還可以在程序的執(zhí)行過程中動態(tài)創(chuàng)建對話框資源。
對話框類:在MFC程序中可以使用向?qū)椭脩艚⒁粋€與對話框資源相關聯(lián)的類通常這個類由CDialog類派生。
對話框的類型 對話框可以分為模式對話框和無模式對話框兩種類型。
CDialog 為了能夠方便的操作對話框MFC為用戶提供了CDialog類。
它是在屏幕上顯示對話框的基類與對話框資源緊密相關提供了管理對話框的接口封裝了一些對話框的相關操作。
從CDialog的定義代碼可以看出Cdialog提供了兩套構建Cdialog對象的系統(tǒng)分別用于模式對話框和無模式對話框。
無模式對話框?qū)ο蟮臉嫿ㄟ^程它首先調(diào)用缺省的構造函數(shù)生成對話框?qū)ο笕缓笳{(diào)用Create函數(shù)創(chuàng)建和初始化對話框。
Cdialog類中的Create函數(shù)有兩種函數(shù)原型: BOOL Create( LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL ); BOOL Create( UINT nIDTemplate, CWnd* pParentWnd = NULL ); 其中 參數(shù)lpszTemplateName是無模式對話框模板資源的標志符; 參數(shù)nIDTemplat是對話框模板資源的標志符它通常以IDD_開頭(例如IDD_DIALOG1); 參數(shù)pParentWnd是指向?qū)υ捒驅(qū)ο笏鶎俚母复翱诘闹羔槪ㄈ绻鼮镹ULL則表示對話框?qū)ο蟮母复翱谑菓贸绦蛑鞔翱冢?/p>
如果希望對話框中它的父窗口創(chuàng)建后馬上被顯示就必須把對話框模板設置為WS_VISIBLE形式。
否則需要調(diào)用ShowWindow函數(shù)來顯示對話框。
對于模式對話框其構造函數(shù)如下所示: CDialog( LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL ); CDialog( UINT nIDTemplate, CWnd* pParentWnd = NULL ); 構造函數(shù)的參數(shù)說明與無模式對話框的Create函數(shù)類似。
在模式對話框中當創(chuàng)建了對話框?qū)ο蠛罂梢酝ㄟ^調(diào)用DoModal函數(shù)來顯示對話框。
一般情況下無論是模式對話框還是無模式對話框都有兩個按鈕OK和CANCEL。
對話框為它們提供了默認的消息處理函數(shù)OnOk和OnCancel。
調(diào)用這兩個函數(shù)都將關閉對話框。
所不同的是默認的OnOk函數(shù)中關閉對話框前將更新對話框數(shù)據(jù)而默認的OnCancel函數(shù)不更新對話框數(shù)據(jù)。
當CDialog類檢測到OK或Cancel鍵時它將調(diào)用::EndDialog函數(shù)。
EndDialog函數(shù)雖然結(jié)束了對話框應用程序但卻并沒有刪除對話框?qū)ο筢尫艃?nèi)存。
這對于模式對話框來說不是問題它的生存時間不長我們一般在棧上創(chuàng)建它們;但無模式對話框則不同它的生存時間更長我們通常在棧上創(chuàng)建它們并且希望它在消失之前能夠刪除自己。
因此大多數(shù)情況下我們需要在無模式對話框中重載OnOK和OnCancel函數(shù)加入DestroyWindows函數(shù)來徹底地刪除它。
對話框數(shù)據(jù)交換和驗證機制 在VC中所有的對話框函數(shù)都是使用C++代碼實現(xiàn)的它并沒有采用特殊的資源或“奇特”的宏但卻可以很好地實現(xiàn)用戶與應用程序之間的交互工作這里的關鍵就在于對話框應用程序中廣泛采用的對話框數(shù)據(jù)交換和驗證機制。
對話框數(shù)據(jù)交換(DDX,Dialog Data Exchange)用于初始化對話框中的控件并獲取用戶的數(shù)據(jù)輸入而對話框數(shù)據(jù)驗證(DDV,Dialog Data Validation)則用于驗證對話框中數(shù)據(jù)輸入的有效性。
MFC在每個對話框類中提供了一個用于重載的虛函數(shù)——DoDataExchange來實現(xiàn)對話框數(shù)據(jù)交換和驗證工作。
對話框數(shù)據(jù)交換 如果使用DDX機制則通常在OnInitDialog程序或?qū)υ捒驑嬙旌瘮?shù)中設置對話框?qū)ο蟪蓡T變量的初始值。
在對話框即將顯示前應用程序框架的DDX機制將成員變量的值傳遞給對話框的控件當對話框響應DoModal或Create而被顯示時對話框控件將“顯示”這些值。
Cdialog類中的OnInitDialog函數(shù)默認時將調(diào)用CWnd類的UpdateData成員函數(shù)初始化對話框中的控件。
UpdateData函數(shù)的原型如下: BOOL UpdateData( BOOL bSaveAndValidate = TRUE ); 函數(shù)參數(shù)為TRUE即將對話框及其控件中的數(shù)據(jù)傳遞給程序代碼中的成員變量; 函數(shù)參數(shù)為FALSE即將類中的數(shù)據(jù)狀態(tài)傳遞給對話框及其控件。
當用戶重載DoDataExchange函數(shù)時也就為每一個數(shù)據(jù)成員(控件)指定了一個DDX函數(shù)調(diào)用。
對話框數(shù)據(jù)驗證 除了調(diào)用DDX參數(shù)指定數(shù)據(jù)交換外用戶還可以使用DDV函數(shù)進行對話框數(shù)據(jù)驗證。
在調(diào)用控件的DDX函數(shù)后必須立即調(diào)用該控件的DDV函數(shù)。
大部分DDV函數(shù)的原型如下所示。
DDV_MinMaxCustom(pDX, Data, MinData, MaxData); 其中參數(shù)pDX是一個指向CdataExchange對象的指針參數(shù)Data中存放著即將被驗證的數(shù)據(jù)后兩個參數(shù)用于定制數(shù)據(jù)的范圍。
CdataExchange類 如果僅僅需要使用對話框數(shù)據(jù)一般沒有必要了解數(shù)據(jù)交換/驗證的核心內(nèi)容。
但在了解了數(shù)據(jù)交換和驗證的實質(zhì)后用戶就可以編寫自己的數(shù)據(jù)交換和驗證代碼定制DDX/DDV. 對話框控件 控件是一個可以與其交互以完成輸入或操作數(shù)據(jù)操作的對象它也是一種特殊的窗口。
控件通常出現(xiàn)在對話框或工具欄中。
Windows提供了多種多樣的控件在MFC應用程序中能夠使用的控件通常可以分為三種。
1)windows公用控件:包括編輯控件、按鈕、列表框、組合框、滑動條控件等另外也包括所有者描述的控件。
2)ActiveX控件:既可以在對話框中使用也可以在HTML網(wǎng)頁中使用。
3)由MFC提供的其他控件類 我們主要介紹安防種類型的控件——Windows公用控件。
Windows操作系統(tǒng)提供了多種windows公用控件這些控件對象都是可編程的Visual C++的對話框編輯器支持將這些控件對象添加到對話框中。
用戶可以在工具箱的對話框編輯器中看到這些windows公用控件。
MFC為了更好的支持windows公用控件提供了多種控件類每一個控件類封裝一種控件并提供相應的成員函數(shù)來管理操作控件。
舉例說明window對象中常用的消息框函數(shù)?
通常來說消息框在 windows 操作系統(tǒng)的 winAPI 里提供有 MessageBox 函數(shù)。函數(shù)原型:int WINAPI MessageBox(HWND hWnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT uType);參數(shù): hWnd:彈出該對話框的窗體的句柄若沒有可以寫NULL。不寫NULL就是模態(tài)的寫NULL就是非模態(tài)。
lpText:消息框中顯示的內(nèi)容。如果使用了Unicode庫需要使用TEXT宏對字符串進行轉(zhuǎn)化。 lpCaption:消息框的標題。如果使用了Unicode庫需要使用TEXT宏對字符串進行轉(zhuǎn)化。 uType:使用此參數(shù)指定消息框的類型(提示、警告、錯誤等)、消息框中顯示的按鈕(確定、取消、忽略、重試等)及其他選項??扇〉闹涤?。
Create?
Create是一個可從CFrameWnd繼承而來的成員函數(shù)用于窗口的創(chuàng)建和設置。 Create是MFC中的一個構造函數(shù)用于生成在屏幕上可見的窗口。 示例如下: Create(NULL,_T("Hello MFC")); 該函數(shù)將會(在已創(chuàng)建窗體對象的前提下)生成一個在屏幕上可以看到的窗口窗口的標題文本為Hello MFC。 CFrameWnd::Create的原型如下: BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle = WS_OVERLAPPEDWINDOW, const RECT& rect = rectDefault, CWnd* pParentWnd = NULL, LPCTSTR lpszMenuName = NULL, DWORD dwExStyle = 0 CCreateContext* pContext = NULL) Create接收的8個參數(shù)中的6個由默認值定義如無特殊要求那么只需要執(zhí)行安防少量的操作為函數(shù)的前兩個參數(shù)指定值對剩下的6個參數(shù)接受默認值。 安防個參數(shù)lpszClassName指定了窗口基于WNDCLASS類的名稱若將其設定為NULL則會創(chuàng)建一個基于由主結(jié)構注冊的WNDCLASS類的默認框架窗口。 lpszWindowName參數(shù)則指定將在窗口的標題欄出現(xiàn)的文本。 調(diào)用Create函數(shù)可以通過指定別的樣式或選擇組合樣式來更改窗口樣式在CFrameWnd::Create文檔中可以找到完整的窗口樣式列表。
請舉一個腳本語言安防好是Python或Lua的例子?
這以Python為例簡單介紹Python是如何調(diào)用Windows API的主要用到pywin32這個模塊實驗環(huán)境Win10+Python3.6+PyCharm5.0主要內(nèi)容如下:
1.首先安裝pywin32模塊這個直接在cmd窗口輸入命令“pip install pywin32”就行如下:
2.接著我們就可以導入win32api和win32con模塊(隸屬于pywin32)簡單調(diào)用一個對話框測試代碼如下非常簡單主要用到MessageBox這個API函數(shù)函數(shù)原型int WINAPI MessageBox(HWND hWnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT uType)其中第1個參數(shù)是指明窗口第2個參數(shù)為窗口顯示內(nèi)容第3個參數(shù)為窗口標題第4個參數(shù)為對話框按鈕和圖表:
程序運行截圖如下:
3.這里你也可以使用ctypes模塊加載Windows API(其實Windows API也就是dll動態(tài)庫)測試代碼如下也非常簡單:
程序運行截圖如下:
更多說明可以查看安防文檔http://timgolden.me.uk/pywin32-docs/contents.html非常詳細。
3.安防后這里以調(diào)用qq窗口實現(xiàn)自動發(fā)送消息為例主要用到win32guiwin32conpyperclip這3個模塊基本思路先獲取qq窗口句柄然后將發(fā)送內(nèi)容寫入剪切板接著由剪切板寫入qq消息框安防后模擬發(fā)送按鈕發(fā)送主要代碼如下:
點擊運行程序截圖如下已經(jīng)成功發(fā)送消息:
至此我們就完成了利用Python來調(diào)用Windows API??偟膩碚f整個過程不難但相關資料和文檔需要自己好好研究比較復雜繁瑣網(wǎng)上也有相關示例感興趣的話可以搜一下希望以上分享的內(nèi)容能對你有所幫助吧也歡迎大家評論、留言進行補充。
返回:安防新聞
廣告咨詢:18215288822 采購熱線:18215288822
聲明:農(nóng)機大全所有(圖文、音視頻)均由用戶自行上傳分享,僅供網(wǎng)友學習交流,版權歸原作者。若您的權利被侵害,請聯(lián)系 56325386@qq.com 刪除。
載注明出處:http://m.121vipspeaking.com/news/295220.html