freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

用c語言寫聊天工具,類似于qq-預(yù)覽頁

2025-06-10 13:53 上一頁面

下一頁面
 

【正文】 上面是為了讓大家了解下復(fù)雜數(shù)據(jù)類型的定義,羅嗦了一大堆。因此可以知道句柄也是個(gè)指針而已。大家一定要利用好msdn,很有用的。但愿大家能夠一口氣讀完,如果一口氣讀不完,那就換口氣接著讀。lpText 對(duì)話框窗口的顯示內(nèi)容。Windows下一個(gè)窗口創(chuàng)建的過程有以下幾個(gè)步驟:1. 程序創(chuàng)建一個(gè)窗口,首先要向Windows系統(tǒng)注冊(cè)一個(gè)窗口類wndclassex,其實(shí)就是定義一個(gè)變量,變量的類型是WNDCLASSEX(結(jié)構(gòu)體)。style。cbClsExtra。hInstance。hCursor。lpszMenuName。hIconSm。 可以有以下的值lpfnWndProc 指向窗口處理函數(shù)(回調(diào)函數(shù))。hCursor 窗口類的鼠標(biāo)樣式,為鼠標(biāo)樣式資源的句柄,如果設(shè)置為NULL,系統(tǒng)提供一個(gè)默認(rèn)的鼠標(biāo)樣式。 COLOR_APPWORKSPACE COLOR_BTNTEXT COLOR_HIGHLIGHTTEXT COLOR_MENUTEXT COLOR_WINDOWTEXT lpszMenuName 指向一個(gè)以NULL結(jié)尾的字符床,同目錄資源的名字一樣。hIconSm 小圖標(biāo)的句柄,在任務(wù)欄顯示的圖標(biāo),可以和上面的那個(gè)一樣。2. 創(chuàng)建窗口這一步很簡(jiǎn)單,就是利用CreateWindowEx()函數(shù)來創(chuàng)建就是了。DWORDdwStyle,intnHeight,HWNDlpParam)。   WS_EX_CLIENTEDGE:指定窗口有一個(gè)帶陰影的邊界?! ? WS_EX_LEFT:窗口具有左對(duì)齊屬性,這是缺省設(shè)置的。這是缺省設(shè)置的。 WS_EX_PALETTEWINDOW:WS_EX_WINDOWEDGE, WS_EX_TOOLWINDOW和WS_WX_TOPMOST風(fēng)格的組合WS_EX_RIGHT:窗口具有普通的右對(duì)齊屬性,這依賴于窗口類。WS_EX_STATICEDGE:為不接受用戶輸入的項(xiàng)創(chuàng)建一個(gè)3一維邊界風(fēng)格  WS_EX_TOOLWIDOW:創(chuàng)建工具窗口,即窗口是一個(gè)游動(dòng)的工具條。  由于其下的同屬富日已被重畫,該窗口是透明的。dwStyle:指定創(chuàng)建窗口的風(fēng)格。nWidth:窗口的寬度。lpParam:指向一個(gè)值的指針,該值傳遞給窗口 WM_CREATE消息返回值:如果函數(shù)成功,返回值為新窗口的句柄:如果函數(shù)失敗,返回值為NULL。ShowWindow(nCmdShow //可見狀態(tài) )。如果那個(gè)窗體的無效區(qū)域沒有,就不發(fā)送重繪消息 WM_PAINT 了 。經(jīng)過這三步后,一個(gè)窗口就實(shí)現(xiàn)了,就創(chuàng)建了出來,難不,也真夠難的,Windows想的正周到,把創(chuàng)建過程的每一個(gè)細(xì)節(jié)都給想到了,每毫秒可能發(fā)生的事情都想到了,難怪Windows那么貴,還不開源。這T他媽容易了吧。}//主函數(shù)int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd){ char *cName = myWindow。 = 0。//通過函數(shù)來設(shè)置一個(gè)白色的背景,這里大家設(shè)置為NULL看看,會(huì)很有趣的 = NULL。//當(dāng)前程序的句柄,hInstance是有系統(tǒng)給傳遞的 = WinProc。 = NULL。//在系統(tǒng)中注冊(cè) hWnd = CreateWindowEx(WS_EX_CLIENTEDGE,cName,我的窗口我喜歡,WS_OVERLAPPEDWINDOW, 200,100,600,400,NULL,NULL,hInstance,NULL)。 } ShowWindow(hWnd,nShowCmd)。Msg)。}編譯運(yùn)行后,可以看到一個(gè)白色背景的窗口出來了。其實(shí)寫這些程序很多東西都不用去記的想WNDCLASSEX結(jié)構(gòu)的成員及成員作用,這些都不用去死記,只要知道有這么個(gè)東西,到時(shí)時(shí)再查就可以了,編程用到的函數(shù)、結(jié)構(gòu)體那么多,誰想記呀。網(wǎng)游我就只玩過魔域,所以就以魔域?yàn)槔?,魔域中的鼠?biāo)是這樣的。程序沒有進(jìn)入內(nèi)存運(yùn)行的時(shí)候,我們就叫它可執(zhí)行文件吧,在磁盤保存的時(shí)候,并不只是保存了程序運(yùn)行的代碼部分(即cpu指令部分),還有一些圖片、字符、按鈕、圖標(biāo)并不是在代碼段的。光標(biāo)的圖片格式有兩中cur和ani的。include define CUR 0x1000 //預(yù)定義光標(biāo)的id//回調(diào)函數(shù)LRESULT WINAPI WinProc(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam){ switch(Msg)//處理消息過程,什么是消息,下節(jié)再講 { case WM_DESTROY://響應(yīng)鼠標(biāo)單擊關(guān)閉按鈕事件 PostQuitMessage(0)。 WNDCLASSEX wc。 = 0。//這里改了,來載入光標(biāo)資源 = NULL。//窗口處理過程的回調(diào)函數(shù)。//目錄名,不設(shè)置 = CS_HREDRAW | CS_VREDRAW。//創(chuàng)建窗口,窗口標(biāo)題為我的窗口我喜歡 if(hWnd == NULL) {//容錯(cuò)處理 MessageBox(NULL,There39。//顯示窗口 UpdateWindow(hWnd)。//翻譯消息 DispatchMessage(amp??吹搅税桑?dāng)鼠標(biāo)移入窗口的時(shí)候,光標(biāo)就變成了那個(gè)手型圖案了, 這和魔域的是一樣的。這些東西都比較接近系統(tǒng)了,所以學(xué)了之后,你對(duì)Windows系統(tǒng)也會(huì)有很深的了解的。希望大家繼續(xù)努力! 在窗口上寫上“Hello World”這一節(jié)我們乘勝追擊,來繼續(xù)深入學(xué)習(xí)下,學(xué)習(xí)窗口處理時(shí)間的東東。學(xué)過VB的人知道,VB中的程序是事件驅(qū)動(dòng)的,因?yàn)橐话愣际前l(fā)生時(shí),調(diào)用相應(yīng)的事件處理函數(shù),所以整個(gè)處理過程都好像是事件引發(fā)的一樣。而C語言本身就是面向過程的語言,所以這一過程可以用C語言更好地表現(xiàn)出來,這也是我用C而不用C++的原因之一。下面先看下前兩節(jié)種用到的消息循環(huán)代碼: while(GetMessage(amp。Msg)。菊與刀非鍵盤消息TranslateMessage則不做處理。Windows有時(shí)真是個(gè)細(xì)心的家伙,把窗口創(chuàng)建到顯示的一瞬間又給劃分了很多小的過程。下面就接著上節(jié)修改的代碼繼續(xù)修改,必要的注釋和改變的地方我會(huì)標(biāo)明的include define CUR 0x1000 //預(yù)定義光標(biāo)的idHDC hDC。//回調(diào)函數(shù)LRESULT WINAPI WinProc(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam){ switch(Msg)//處理消息過程,什么是消息,下節(jié)再講 { case WM_PAINT: //BginPaint做些繪畫的開始工作,填充PAINSTURCT結(jié)構(gòu),返回設(shè)備上下文(暫時(shí)不用理解)句柄 hDC=BeginPaint(hWnd,amp。 //DrawText就是Windows用來“畫字”的筆了,DT_*之類是指文字的樣式,看字面意思也能看懂的 //有多少樣式呢,可以查看這里 //本例中是單線、水平居中和豎直居中。 EndPaint(hWnd,amp。//退出消息隊(duì)列,至于什么是消息隊(duì)列,下節(jié)說 return 0。 HWND hWnd。 = sizeof(WNDCLASSEX)。//不設(shè)置 = NULL。 =(LPSTR)cName。 RegisterClassEx(amp。s an Error,Error Title,MB_ICONEXCLAMATION|MB_OK)。 //下面是對(duì)消息的循環(huán)處理,大家先不必管這些,下節(jié)課我會(huì)細(xì)說的 while(GetMessage(amp。Msg)。建議學(xué)過VB或JAVA的讀者,可以聯(lián)系起來想一想,把C的處理消息過程給理解下,理解下消息的結(jié)構(gòu)和概念,熟悉西Windows的消息機(jī)制,這樣就可以為以后編寫優(yōu)質(zhì)的軟件打下堅(jiān)實(shí)的基礎(chǔ)。鼠標(biāo)的事件有單擊、右擊、雙擊和滾動(dòng)輪的,我們這里先讓鼠標(biāo)響應(yīng)兩種事件:?jiǎn)螕艉陀覔?。case WM_RBUTTONUP://鼠標(biāo)右鍵松開時(shí) MessageBox(hWnd,你擊了右鍵,提示,MB_OK)。自己多寫寫代碼,多查查資料成就很快的。大家學(xué)習(xí)一定要自己多查多練習(xí),相信聰明的你一定會(huì)輕松解決遇到的問題的。從前面的知識(shí)中,我們知道,窗口的初始位置是在CreateWindow函數(shù)中設(shè)定的,Windows既然可以讓用戶通過鼠標(biāo)拖來改變窗口位置,那么肯定就有函數(shù)是專門用來改變窗口位置的。  函數(shù)原型:BOOL SetWindowPos(HWN hWnd,HWND hWndlnsertAfter,int X,int Y,int cx,int cy,UNIT.Flags);  參數(shù):  hWnd:窗口句柄。  HWND_NOTOPMOST:將窗口置于所有非頂層窗口之上(即在所有頂層窗口之后)。即使窗口未被激活窗口也將保持頂級(jí)位置?! x:以像素指定窗口的新的寬度。這就防止調(diào)用線程在其他線程處理需求的時(shí)候發(fā)生死鎖。如果未指定這個(gè)標(biāo)志,只有在改變了窗口尺寸時(shí)才發(fā)送WM_NCCALCSIZE。如果未設(shè)置標(biāo)志,則窗口被激活,并被設(shè)置到其他最高級(jí)窗口或非最高級(jí)組的頂部(根據(jù)參數(shù)hWndlnsertAfter設(shè)置)。  SWP_NOOWNERZORDER:不改變z序中的所有者窗口的位置。如果設(shè)置了這個(gè)標(biāo)志,應(yīng)用程序必須明確地使窗口無效并區(qū)重畫窗口的任何部分和父窗口需要重畫的部分。  SWP_NOZORDER:維持當(dāng)前Z序(忽略hWndlnsertAfter參數(shù))?! 渥ⅲ喝绻O(shè)置了SWP_SHOWWINDOW和SWP_HIDEWINDOW標(biāo)志,則窗口不能被移動(dòng)和改變大小。當(dāng)一個(gè)窗口被置為最頂層窗口時(shí),屬于它的所有窗口均為最頂層窗口,而它的所有者的z序并不改變。應(yīng)用程序可以無任何限制地改變被激活窗口在Z序中的位置,或激活一個(gè)窗口并將其移到最高級(jí)窗口的頂部或非最高級(jí)窗口的頂部。任何屬于頂層窗口的窗口(例如一個(gè)對(duì)話框)本身就被置為頂層窗口,以確保所有被屬窗口都在它們的所有者之上。這也是重新計(jì)算客戶區(qū)的唯一途徑,也是通過調(diào)用SetwindowLong函數(shù)改變窗口風(fēng)格后通常使用的方法。對(duì)于頂層窗口,位置和尺寸是相對(duì)于屏幕的左上角的:對(duì)于子窗口,位置和尺寸是相對(duì)于父窗口客戶區(qū)的左上角坐標(biāo)的。  nWidth:指定窗口的新的寬度。它適用于客戶區(qū),非客戶區(qū)(包括標(biāo)題欄和滾動(dòng)條),及由于移動(dòng)子窗口而露出的父窗口的區(qū)域?! 渥ⅲ喝绻鸼Repaint為TRUE,系統(tǒng)在窗口移動(dòng)后立即給窗口過程發(fā)送WM_PAINT消息(即由MoveWindow函數(shù)調(diào)用UPdateWindow函數(shù))。以上的東西,都是從msdn上翻譯過來的,把它們翻譯過來,是在有故意添文字之嫌。//RECT用來存儲(chǔ)窗口信息的結(jié)構(gòu),只要是窗口的坐標(biāo)、寬度和高度。 return 1。 return 1。rect)。 //EndPaint就是做些收尾的工作了。 case WM_LBUTTONUP://鼠標(biāo)左鍵松開時(shí) MoveLeft(hWnd)。 case WM_DESTROY://響應(yīng)鼠標(biāo)單擊關(guān)閉按鈕事件 PostQuitMessage(0)。 WNDCLASSEX wc。 = 0。//這里改了,來載入光標(biāo)資源 = NULL。//窗口處理過程的回調(diào)函數(shù)。//目錄名,不設(shè)置 = CS_HREDRAW | CS_VREDRAW。//創(chuàng)建窗口,窗口標(biāo)題為我的窗口我喜歡 if(hWnd == NULL) {//容錯(cuò)處理 MessageBox(NULL,There39。//顯示窗口 UpdateWindow(hWnd)。//翻譯消息 DispatchMessage(amp。經(jīng)過這幾次折騰,如果大家真的每一次都手寫了,相信其中的那關(guān)鍵的且相同的那部分代碼應(yīng)該是非常熟悉了,到此就我們就該升級(jí)了,就行高一層次的修煉,后面兩節(jié),我準(zhǔn)備給大家說些資源的深入細(xì)節(jié),還有再在寫幾個(gè)完全實(shí)用的小程序和幾個(gè)惡作劇程序,不知大家意下如何。以當(dāng)前我這個(gè)Word編輯窗口為例,可以看到一個(gè)窗口有很多項(xiàng)的,而我們之前的串口跟這個(gè)相比,真可謂小巫見大巫。這和用網(wǎng)頁設(shè)計(jì)工具是一樣的,我們只顧點(diǎn)鼠標(biāo),代碼則是網(wǎng)頁設(shè)計(jì)工具生成的了。如果大家資源文件寫的很熟練的話,再用VC中的IDE工具,不用去看多余的書,自然一看就知道是怎么回事,到時(shí)用起來就是得心應(yīng)手。還有一個(gè)我自己做的圖標(biāo)(xhk字樣的,左上角)??旖萱I,這個(gè)不用說了,大家都知道是做什么用的。MENU關(guān)鍵詞后面的DISCARDABLE是菜單的內(nèi)存屬性,表示菜單在不再使用的時(shí)候可以暫時(shí)從內(nèi)存中釋放以節(jié)省內(nèi)存,是個(gè)可選屬性。命令I(lǐng)D——不同菜單項(xiàng)的標(biāo)識(shí)。GRAYED——表示菜單項(xiàng)是灰化的。第三類:彈出式菜單,前文有解釋,這里說下它的選項(xiàng):GREAYED——灰化。鍵名——表示加速鍵對(duì)應(yīng)的按鍵,可以有3中定義方式: “^字母”:表示Ctrl鍵加上字母鍵。選項(xiàng)——可以使Alt,Control或Shift中的單個(gè)或多個(gè),如果指定多個(gè),則中間用逗號(hào)隔開,表示快捷鍵是按鍵加上這些控制鍵的組合鍵。O)\tCtrl+Alt+O,IDM_OPEN } popup 查看(a
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1