日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

跟我一起玩Win32开发(18):使用对话框的两个技巧

發布時間:2024/8/1 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 跟我一起玩Win32开发(18):使用对话框的两个技巧 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

相信大家知道對話框怎么用了,就是先用“資源編輯器”設計一個對話框,然后在代碼中加載處理。今天,我向大家分享兩個使用對話框的技巧,還是比較實用的。不用擔心,先喝杯茶,很簡單的,一點也不復雜,總之,看俺寫的博客,你不會有思想壓力的。放心好了。

?

這兩個技巧分別是:

1、在顯示某個對話框時,向對話框傳遞數據。

這個我相信大家能夠理解,就好比咱們在做Web開發的時候,在打開一個頁面時,可能會考慮向目標頁面傳一些參數,如這樣http://www.牛B.com/yyy.aspx?tid=19999,是吧,我們都很經常這樣做,所以,在玩Win32的時候,我們也同樣希望這樣。

我們知道,要顯示一個模態對話框,可以調用DialogBox函數,這個不難,我有理由相信大家只需稍稍研究一下,一定會玩的,就像遙控飛機那么簡單。如果你認真閱讀MSDN,你一定會發現有這么一個函數:DialogBoxParam。怎么樣,是不是和前面的那個DialogBox很像,只是腦袋后面多了幾根汗毛罷了,而且,從Param就可以猜到,應該與參數傳遞有關。對,猜得相當好,我們在顯示某個對話框時,要向對話框傳參數,就是用它了。

順便提一下,什么是模態對話框呢?模態對話框就是說如果這個對話框彈出來(顯示)了,你就不能操作父窗口或者其上面的控年了,程序也會在彈出對話框后停下,直到操作完成了,你把對話框關了,程序才會繼續,你才能操作其他控件,就好像你開車上班,行駛到某個路口,前面有幾輛車突然停了下來,車上下來一群不男不女的人,在馬路上打起架來了,導致交通嚴重受阻,你的車夾在車流中間,既不前進,也不能后退,就卡在那里,你估計只好呆在車里,拿出MP5,看看恐怖片,等到交通恢復正常了,才能繼續行車。

?

看看這個DialogBoxParam函數的定義:

INT_PTR WINAPI DialogBoxParam(_In_opt_ HINSTANCE hInstance,_In_ LPCTSTR lpTemplateName,_In_opt_ HWND hWndParent,_In_opt_ DLGPROC lpDialogFunc,_In_ LPARAM dwInitParam );

前面幾個參數估計不用我介紹了,大家都認識,比周杰倫和刀郎還要出名。重點是最后一個參數,它是一個LPARAM類型的,我記得Win32的許多類型的命名是有規律的,你看看,凡是P開頭或者LP開頭都是指針類型,不信你可以總結一下。

所以這個參數肯定是指定某種未知生物的指針,指針存的是地址,所以我們通過把我們要傳給對話框的數據的地址傳給這個參數,這樣,對話框的消息處理函數如果想取到你傳給它的數據,就從這個地址去找。就好像你同學介紹了一位美女給你認識,他告訴你這位MM的QQ號,然后你想泡她你就知道怎么做了,加QQ聊唄。

那么,這個參數會傳到哪里去呢,怎么取出來呢?這個參數傳給了WM_INITDIALOG消息的lParam參數,所以,在對話框的消息處理函數中,捕捉WM_INITDIALOG消息,從它的lParam參數就可以找到數據的首地址了。

?

顯示對話框并傳遞參數。

DialogBoxParam(glo_hInst,MAKEINTRESOURCE(IDD_DLG1),hwnd,(DLGPROC)DialogProcWithPrm,(LPARAM)L"Win32程序好玩不?");

?我傳遞了一些文本給它,即“Win32程序好玩不?”,接著在響應WM_INITDIALOG消息時就接收并顯示這個參數。

switch (uMsg){case WM_INITDIALOG:{LPCWSTR param = (LPCWSTR)lParam;//取得顯示文本控件的句柄HWND stDisplay = GetDlgItem(hwndDlg, IDC_STINFO);//設置文本SendMessage(stDisplay, WM_SETTEXT, NULL, (WPARAM)param);}return 0;

哈哈,不難吧。

?

2、獲取對話框返回的數據。

前面是傳數據給對話框,現在要反過來,是獲得從對話框傳回來的數據。剛才我們說了,模態對話框顯示時,父窗口會在等待,等啥,就是等DialogBox返回,它返回的類型是INT_PTR,所以,如果要返回比較復雜的數據,可以用它來保存指針,因為指針本質上就是一個數值。

// 顯示對話框并取得返回的數據LPCWSTR returnData = (LPCWSTR)DialogBox(glo_hInst,MAKEINTRESOURCE(IDD_DLG2),hwnd,(DLGPROC)DialogProcWithRtVl);if(returnData != NULL){//先將字符拷貝一次WCHAR str[100];wcscpy(str, returnData);//顯示從對話框返回的內容MessageBox(hwnd, str, L"從對話框返回的數據", MB_OK);}break;

我這個例子是在對話框中輸入一些字符,然后把這些字符串返回。所以,返回的內容是指向字符數組首地址的指針,故我直接把它轉換為LPCWSTR類型的變量。

?

在對話框中,調用EndDialog結束對話框,并在第二個參數中傳回數據。

if(LOWORD(wParam)== IDOK){//獲得Edit編輯框的句柄HWND hEdit = GetDlgItem(hwndDlg, IDC_EDTIN);//獲得文本WCHAR wText[100];int len = Edit_GetText(hEdit, wText, 100);EndDialog(hwndDlg, (INT_PTR)wText);//退出對話框并返回數據}

?

例子運行之后的結果可以看看下面的截圖。

?




?

示例源代碼隨后我上傳到資源區,有興趣的朋友可以下載來玩一下。

總結

以上是生活随笔為你收集整理的跟我一起玩Win32开发(18):使用对话框的两个技巧的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲色图丝袜 | 免费午夜激情 | 国产精品久久二区 | 中文 日韩 欧美 | 黄色av免费| 亚洲精品 欧美 | 丁香激情综合 | 日韩久久久久久 | 影音先锋在线中文字幕 | 成人深夜在线观看 | 国产午夜福利片 | 欧美自拍一区 | 国产一区免费在线观看 | 男女搞网站 | 久久免费黄色网址 | 亚洲一卡二卡三卡四卡 | 69精品一区二区三区 | 我不卡av | 成人播放器 | 亚洲a色 | 动漫精品一区二区三区 | 国产精品久久久久久亚洲 | av这里只有精品 | 日日夜夜撸撸 | 欧美亚洲视频在线观看 | 亚洲网站免费观看 | 精品色| v8888av| 少妇特黄一区二区三区 | 麻豆成人免费视频 | 色偷偷中文字幕 | www.色就是色 | 性欧美ⅹxxxx极品护士 | 免费看黄色a级片 | 老汉av在线 | 色无极亚洲色图 | av免费大片 | av日韩一区二区三区 | 国产欧美日韩精品在线观看 | 欧美老少做受xxxx高潮 | 日韩欧美一区二区三区在线 | 三级免费网址 | 15p亚洲| 微拍福利一区二区 | 久久久久亚洲av无码专区首jn | 欧美日韩久久久 | 日日夜夜精品免费视频 | 超碰97av | 色天使亚洲 | 伊人网综合 | 亚洲一区二区视频网站 | 黑人精品一区二区三区 | 日韩一区二区三区在线 | 国产亚洲精品成人a | 都市激情中文字幕 | 青青草公开视频 | 天天久久 | 成年性生交大片免费看 | 欧美熟女一区二区 | 日韩欧美中文字幕在线观看 | 天堂网2014av| 国产福利专区 | 嫩草免费视频 | 国产精品theporn | 国产主播福利在线 | 人人妻一区二区三区 | 午夜电影一区二区 | 成人性生交大片免费卡看 | 色婷婷激情网 | 欧美亚洲成人网 | 在线麻豆视频 | 久久在线精品 | 色综合视频在线观看 | 秋霞av一区二区三区 | 亚洲一区二区观看 | 成人在线免费观看网址 | 亚洲国产中文字幕 | 日本全黄裸体片 | 全肉的吸乳文 | 天天干天天操天天射 | 国产精品无码久久久久成人app | 午夜激情视频网站 | 极品探花在线播放 | 精品无码国产av一区二区三区 | 成人av一区二区在线观看 | 亚洲国产成 | 波多野结衣一区二区三区 | 91av在线播放 | 久久av综合 | 欧美日韩xxxx | sm久久捆绑调教精品一区 | av大片网 | 国产素人在线观看 | 精品一区二区精品 | 国产草草| 97色网| 亚洲第一成年人网站 | 高h乱l高辣h文短篇h | 亚洲一区二区在线视频 |