亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? windows

?? c_c++技巧集.zip
??
字號(hào):
作者:chache
email: cyzhx@263.net
日期:2000-10-23 17:30:50

作者:宋立波


  WINDOWS應(yīng)用程序窗口一般包括兩種:普通窗口和常居頂層的無(wú)標(biāo)題條高級(jí)窗口。前者是
由WINDOWS內(nèi)部功能定制的,它具有WINDOWS應(yīng)用程序窗口的所有普通特性:具有標(biāo)題條、窗
口邊框、最大化按鈕、最小化按鈕和系統(tǒng)默認(rèn)的快捷鍵及鼠標(biāo)支持功能等,利用鼠標(biāo)左鍵拖
動(dòng)該種窗口的標(biāo)題條可以在屏幕上任意移動(dòng)窗口,當(dāng)鼠標(biāo)光標(biāo)停在窗口邊框上時(shí)可以改變窗
口大小;后者是一種定制的高級(jí)窗口,它不具有普通窗口的任何屬性,整個(gè)窗口的控制必須
由編程者來(lái)一一確定,使用這種窗口的典型實(shí)例有WINDOWS中的IME輸入法應(yīng)用程序、UCWIN4
.0平臺(tái)、各種浮動(dòng)工具箱、OFFICE中的桌面工具欄和第三方開(kāi)發(fā)的漢字輸入平臺(tái)等。 

  WINDOWS 這種無(wú)標(biāo)題條常居頂層高級(jí)窗口的一個(gè)顯著特點(diǎn)是,不需改變窗口大小但必須
具有窗口的客戶區(qū)域拖動(dòng)功能。由于普通窗口的拖動(dòng)功能是由系統(tǒng)來(lái)完成的,編制普通的應(yīng)
用程序根據(jù)無(wú)須考慮客戶區(qū)域拖動(dòng)問(wèn)題,因此一般編程人員很難遇到這個(gè)問(wèn)題,更談不上如
何實(shí)現(xiàn)這一功能了。開(kāi)發(fā)者往往希望自己開(kāi)發(fā)出來(lái)的軟件具有經(jīng)典軟件中的窗口客戶區(qū)域拖
動(dòng)功能,筆者曾經(jīng)利用模仿系統(tǒng)鼠標(biāo)點(diǎn)擊標(biāo)題條拖動(dòng)窗口和WINDOWS系統(tǒng)內(nèi)部提供的API發(fā)送
函數(shù)發(fā)送內(nèi)部拖動(dòng)命令來(lái)實(shí)現(xiàn)無(wú)標(biāo)題常居頂層高級(jí)窗口的客戶拖動(dòng)功能,結(jié)果都不理想。后
來(lái)只好在窗口函數(shù)中通過(guò)直接處理WM_LBUTTONDOWN、WM_MOUSEMOVE和WM_LBUTTONUP消息,自
行控制窗口拖動(dòng)的客戶命令區(qū)、拖動(dòng)開(kāi)始、窗口移動(dòng)、拖動(dòng)虛框繪制、虛框移動(dòng)和拖動(dòng)結(jié)束
等過(guò)程,來(lái)實(shí)現(xiàn)高級(jí)頂層窗口的客戶區(qū)域拖動(dòng)方案。下面就自己實(shí)踐經(jīng)驗(yàn)詳細(xì)介紹實(shí)現(xiàn)該方
案的具體方法和主要技巧。 

  一、WINDOWS檢測(cè)客戶拖動(dòng)命令及鼠標(biāo)光標(biāo)動(dòng)態(tài)提示的實(shí)現(xiàn)方法 

  WINDOWS 無(wú)標(biāo)題條常居頂層高級(jí)窗口的客戶區(qū)域一般分為兩種:特定客戶命令區(qū)域和非
特定客戶命令區(qū)域。特定客戶命令區(qū)域是指利用"RECT"定義的特定子矩形區(qū)域,窗口函數(shù)對(duì)
發(fā)生在該區(qū)域內(nèi)的鼠標(biāo)命令進(jìn)行檢測(cè)并處理;非特定客戶命令區(qū)域是指沒(méi)有明確定義的窗口
客戶區(qū)域部分,即所有特定客戶命令區(qū)域之外的部分,窗口函數(shù)根據(jù)實(shí)際需要來(lái)確定是否對(duì)
該區(qū)域內(nèi)發(fā)生的鼠標(biāo)命令進(jìn)行處理。實(shí)現(xiàn)常居頂層高級(jí)窗口拖動(dòng)功能的首要問(wèn)題,是如何檢
測(cè)和處理特定客戶命令區(qū)域和非特定客戶命令區(qū)域內(nèi)的鼠標(biāo)命令,以及如何利用鼠標(biāo)光標(biāo)來(lái)
動(dòng)態(tài)提示用戶此時(shí)可以進(jìn)行窗口的拖動(dòng)操作。 

  1、在特定客戶區(qū)域檢測(cè)鼠標(biāo)命令的方法 

  當(dāng)窗口中設(shè)置了實(shí)現(xiàn)拖動(dòng)功能的圖標(biāo)命令按鈕時(shí),就必須在資源文件中定義命令按鈕的
特定客戶區(qū)域,該區(qū)域一般也就是顯示命令按鈕中圖標(biāo)的矩形區(qū)域,這個(gè)區(qū)域的定義方法為
"RECT DragRT",其中DragRT為定義的檢測(cè)鼠標(biāo)命令矩形區(qū)域,它用DragRT.LEFT、DragRT.T
OP、DragRT.RIGHT和DragRT.BOTTOM四個(gè)參數(shù)來(lái)描述矩形區(qū)域相對(duì)于窗口客戶區(qū)域左上角的相
對(duì)坐標(biāo)值,這四個(gè)參數(shù)必須事先定義具體的數(shù)值,也可以利用"SETRECT"函數(shù)直接填充。 

  窗口函數(shù)在處理鼠標(biāo)消息WM_LBUTTONDOWN時(shí),在接收系統(tǒng)傳遞的鼠標(biāo)位置參數(shù)lParam后
,通過(guò)MAKEPOINT( )函數(shù)將其轉(zhuǎn)換為窗口坐標(biāo)值,利用判斷某坐標(biāo)點(diǎn)是否位于特定矩形區(qū)域
內(nèi)的函數(shù)PtInRect(),就可以判斷鼠標(biāo)指針是否點(diǎn)擊在拖動(dòng)命令按鈕之內(nèi),從而完成窗口拖
動(dòng)功能的啟動(dòng)任務(wù)。其描述性功能代碼示例如下: 

  case WM_LBUTTONDOWN://鼠標(biāo)光標(biāo)點(diǎn)擊處理 

  POINT pt;//鼠標(biāo)在屏幕上位置指針,包括pt.X和pt.Y兩個(gè)參數(shù), 

   //該指針值利用MAKEPOINT通過(guò)lParam參數(shù)轉(zhuǎn)換而來(lái) 

  pt=MAKEPOINT(lParam); //獲取鼠標(biāo)當(dāng)前屏幕位置指針 

  if(PtInRect(&DragRT,pt)){//判斷鼠標(biāo)是否點(diǎn)擊在拖動(dòng)按鈕內(nèi) 

   //實(shí)現(xiàn)鼠標(biāo)拖動(dòng)窗口方案的啟動(dòng)功能 

  } else { 

   //進(jìn)行其它特定或非特定命令客戶區(qū)域判斷處理 

  } 

  break; 

  2、在非特定客戶區(qū)域檢測(cè)鼠標(biāo)命令的方法 

  當(dāng)窗口應(yīng)用程序中采取了非特定客戶區(qū)域拖動(dòng)方法時(shí),必須在資源文件中事先確定各個(gè)
特定客戶區(qū)域的矩形坐標(biāo),這時(shí)非特定客戶區(qū)域是不規(guī)則的區(qū)域,它需要根據(jù)實(shí)際的應(yīng)用程
序窗口及各個(gè)命令按鈕矩形區(qū)域來(lái)確定,也就是各個(gè)命令按鈕相對(duì)于窗口矩形區(qū)域的“非”
子集。窗口函數(shù)在處理鼠標(biāo)消息WM_LBUTTONDOWN時(shí),首先利用函數(shù)PtInRect()判斷當(dāng)前鼠標(biāo)
指針是否點(diǎn)擊在各個(gè)命令按鈕矩形區(qū)域內(nèi),如果未點(diǎn)擊在任何命令按鈕區(qū)域內(nèi),則可確定鼠
標(biāo)點(diǎn)擊在非特定客戶區(qū)域內(nèi),從而實(shí)現(xiàn)窗口拖動(dòng)功能的啟動(dòng)。其描述性功能代碼示例如下:
 

  case WM_LBUTTONDOWN: //鼠標(biāo)光標(biāo)點(diǎn)擊處理 

  POINT pt; //定義鼠標(biāo)在屏幕上的位置指針 

  pt=MAKEPOINT(lParam); //取得鼠標(biāo)光標(biāo)當(dāng)前位置指針 

  for(i=0;i

   if(PtInRect(&DragRT[i],pt)){//DragRT[i]為按鈕矩形數(shù)組 

   break; //鼠標(biāo)點(diǎn)擊在其它按鈕上中斷 

   } 

  } 

  if(i

   //鼠標(biāo)點(diǎn)擊在其它特定客戶區(qū)域內(nèi)則處理其它按鈕功能 

  }else{ 

   //鼠標(biāo)點(diǎn)擊在非客戶區(qū)域內(nèi)則完成窗口拖動(dòng)方案的啟動(dòng) 

  } 

  break; 

  3、窗口拖動(dòng)功能的鼠標(biāo)光標(biāo)動(dòng)態(tài)提示方法 

  在無(wú)標(biāo)題條常居頂層高級(jí)窗口應(yīng)用程序中,既可以采用將特定客戶區(qū)域作為拖動(dòng)命令按
鈕的方法,也可以采取在非特定客戶區(qū)域檢測(cè)窗口拖動(dòng)命令的方法,或者兩種方法兼顧使用
。在使用第一種方法時(shí),可以在命令按鈕中用特定的圖標(biāo)或文字來(lái)提示用戶該命令按鈕的功
能,而后一種方法由于矩形區(qū)域無(wú)法確定不可能用圖標(biāo)或文字來(lái)提示,或根本無(wú)法顯示圖標(biāo)
和文字(如非特定客戶區(qū)域?yàn)榇翱谶吔鐓^(qū)域等),用戶根本無(wú)法知道非特定客戶區(qū)域具有拖
動(dòng)窗口功能,這時(shí)唯有充分利用鼠標(biāo)光標(biāo)的動(dòng)態(tài)提示功能,就象WINDOWS 普通窗口中鼠標(biāo)光
標(biāo)停在窗口邊框上時(shí)鼠標(biāo)光標(biāo)變成雙箭頭形狀來(lái)提示用戶此時(shí)可以改變窗口大小那樣,這個(gè)
功能在高級(jí)窗口界面設(shè)計(jì)中非常重要。 

  實(shí)現(xiàn)鼠標(biāo)光標(biāo)動(dòng)態(tài)提示功能前需要定制鼠標(biāo)光標(biāo)形狀,窗口拖動(dòng)功能的動(dòng)態(tài)提示光標(biāo)形
狀一般為四箭頭圖案,這可以利用微軟公司的SDK、FPT3.0和VC++4.1等高級(jí)開(kāi)發(fā)軟件中的資
源編輯器"IMAGE EDIT"等來(lái)實(shí)現(xiàn)。光標(biāo)資源文件一般為32X32的2色或16色.CUR圖形文件,可
根據(jù)實(shí)現(xiàn)的功能來(lái)具體確定光標(biāo)圖案或直接使用WINDOWS 系統(tǒng)中提供的光標(biāo)資源文件,當(dāng)自
己利用資源編輯器繪制光標(biāo)圖案后,還需要利用DEBUG. EXE程序修改光標(biāo)資源文件中的鼠標(biāo)
光標(biāo)顯示偏移坐標(biāo),以便光標(biāo)圖案能象WINDOWS 系統(tǒng)中的動(dòng)態(tài)提示光標(biāo)一樣,動(dòng)態(tài)提示時(shí)光
標(biāo)圖案中心點(diǎn)正好處于屏幕的當(dāng)前位置。這個(gè)偏移坐標(biāo)值位于光示資源文件中的10和12處的
雙字節(jié)位置,如動(dòng)態(tài)提示光標(biāo)資源文件名為MOUSEM.CUR,要使32X32(2色)的光標(biāo)圖形顯示時(shí)
圖案的中心點(diǎn)正好處于當(dāng)前屏幕位置,其修改方法如下: 

  C>DEBUG MOUSEM.CUR 

  -E 10A 

  XXXX:10A 00.10 00.00 00.10 00.00 

  -W 

  建立起自己的鼠標(biāo)光標(biāo)資源文件后,首先需要在應(yīng)用程序的資源文件中定義鼠標(biāo)光標(biāo),
資源文件中的定義方法為: 

  imecurm CURSOR mousem.cur 

  鼠標(biāo)光標(biāo)資源文件只有在定義之后,才能在應(yīng)用程序中利用LoadCursor()函數(shù)調(diào)入內(nèi)存
使用,其調(diào)用方法為: 

  HCURSOR hCurm;//將鼠標(biāo)光標(biāo)資源文件數(shù)據(jù)調(diào)入內(nèi)存 

  hCurm=LoadCursor(hInstance,"imecurm"); 

  當(dāng)需要?jiǎng)討B(tài)改變鼠標(biāo)光標(biāo)形狀的客戶區(qū)域?yàn)檎麄€(gè)窗口或某個(gè)子窗口的全部客戶區(qū)域時(shí),
在注冊(cè)客戶應(yīng)用程序窗口類時(shí)定義相應(yīng)的鼠標(biāo)光標(biāo)資源句柄,當(dāng)鼠標(biāo)光標(biāo)移到相應(yīng)窗口內(nèi)時(shí)
立刻變成定制的光標(biāo)形狀,移出相應(yīng)窗口時(shí)自動(dòng)恢復(fù)原來(lái)光標(biāo)形狀。實(shí)現(xiàn)鼠標(biāo)光標(biāo)這一動(dòng)態(tài)
提示功能的定義方法如下: 

  wc.hCursor=hCurm; 

  當(dāng)鼠標(biāo)光標(biāo)需要在窗口的特定客戶命令按鈕區(qū)域內(nèi)或非特定客戶命令區(qū)域內(nèi)進(jìn)行動(dòng)態(tài)提
示時(shí),就不能使用上述定義方法,必須在窗口函數(shù)處理WM_MOUSEMOVE消息時(shí)進(jìn)行特殊處理:
首先判斷鼠標(biāo)光標(biāo)指針當(dāng)前位置是否在拖動(dòng)命令按鈕或非特定客戶區(qū)域內(nèi)移動(dòng),如果鼠標(biāo)指
針位置滿足拖動(dòng)窗口功能區(qū)域的要求,則利用API函數(shù)SETCURSOR()改變鼠標(biāo)光標(biāo)圖案,提示
用戶此時(shí)可以進(jìn)行窗口拖動(dòng)操作,并將鼠標(biāo)輸入控制權(quán)交給當(dāng)前窗口,同時(shí)設(shè)置改變鼠標(biāo)光
標(biāo)標(biāo)志;當(dāng)鼠標(biāo)指針移出拖動(dòng)窗口啟動(dòng)命令區(qū)域時(shí),恢復(fù)原來(lái)鼠標(biāo)光標(biāo)圖案同時(shí)釋放鼠標(biāo)輸
入焦點(diǎn)控制權(quán),并清除鼠標(biāo)光標(biāo)動(dòng)態(tài)提示標(biāo)志單元。其功能性代碼描述如下: 

  BOOL DragFlag; //動(dòng)態(tài)提示光標(biāo)標(biāo)志 

  case WM_MOUSEMOVE: //鼠標(biāo)光標(biāo)移動(dòng)處理 

   pt=MAKEPOINT(lParam); //鼠標(biāo)光標(biāo)當(dāng)前位置指針 

   if(PtInRect(&DragRT,pt)){//鼠標(biāo)指針在拖動(dòng)命令區(qū)域內(nèi)則 

   SetCursor(hCurm); //動(dòng)態(tài)改變鼠標(biāo)光標(biāo)形狀 

   SetCapture(hWnd); //將鼠標(biāo)輸入控制權(quán)交當(dāng)前窗口 

   iFlag=TRUE; //設(shè)置鼠標(biāo)光標(biāo)形狀改變標(biāo)志 

   } else if(iFlag==TRUE){ //鼠標(biāo)指針未在拖動(dòng)命令區(qū)域內(nèi) 

   SetCursor(LoadCursor(NULL,IDC_ARROW));//恢復(fù)原形狀 

   ReleaseCapture() //釋放鼠標(biāo)輸入控制權(quán) 

   iFlag=FALSE; //恢復(fù)鼠標(biāo)光標(biāo)形狀改變標(biāo)志 

   } 

   break; 

 

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人午夜电影| 亚洲一二三四在线观看| 日韩精品亚洲专区| 丁香啪啪综合成人亚洲小说| 欧美日韩亚州综合| 亚洲私人黄色宅男| 国产精品 日产精品 欧美精品| 欧美日韩成人在线一区| 中文字幕亚洲综合久久菠萝蜜| 极品瑜伽女神91| 欧美精品丝袜中出| 亚洲人成网站精品片在线观看| 国内精品久久久久影院薰衣草| 51精品视频一区二区三区| 亚洲欧美视频在线观看| 国产精品99精品久久免费| 日韩一级完整毛片| 婷婷开心激情综合| 欧美日韩精品免费观看视频| 综合久久久久综合| 99久久99精品久久久久久| 国产欧美日韩在线看| 精品一区二区三区视频在线观看| 4438成人网| 午夜天堂影视香蕉久久| 欧洲精品在线观看| 亚洲精品日产精品乱码不卡| 成人一二三区视频| 国产欧美日韩综合精品一区二区 | 欧美一区二区网站| 亚洲二区在线视频| 在线观看视频91| 一区二区欧美国产| 91久久线看在观草草青青| 中文字幕中文字幕一区| 成人午夜免费av| 国产偷v国产偷v亚洲高清| 国产美女久久久久| 精品国产精品一区二区夜夜嗨| 蜜臀久久99精品久久久久久9 | 99在线热播精品免费| 欧美韩国日本综合| 99天天综合性| **欧美大码日韩| bt欧美亚洲午夜电影天堂| 国产精品久久久久精k8 | 奇米四色…亚洲| 日韩视频123| 免费观看91视频大全| 欧美一区国产二区| 韩日精品视频一区| 国产欧美日韩精品在线| 成人午夜精品在线| 久久久久青草大香线综合精品| 国产精选一区二区三区| 中文字幕免费不卡| 成人福利视频在线看| |精品福利一区二区三区| 91福利在线看| 免费观看久久久4p| 26uuu另类欧美亚洲曰本| 国产精品996| 亚洲欧美日韩国产综合| 在线亚洲欧美专区二区| 偷窥国产亚洲免费视频| 欧美一二三在线| 国产美女娇喘av呻吟久久| 中文字幕欧美激情一区| 欧日韩精品视频| 久色婷婷小香蕉久久| 久久精品亚洲一区二区三区浴池| 成人av资源下载| 亚洲成人av中文| 精品sm捆绑视频| 91网页版在线| 午夜一区二区三区视频| 日韩欧美一区二区不卡| 国产mv日韩mv欧美| 一区二区激情小说| 日韩欧美二区三区| 99久久久无码国产精品| 丝袜美腿亚洲色图| 国产视频一区二区在线观看| 一本久久精品一区二区| 男男gaygay亚洲| 国产精品电影院| 91.xcao| 国产成人精品免费视频网站| 亚洲激情六月丁香| 精品三级在线看| 色综合久久中文字幕| 免费日韩伦理电影| 一区二区中文字幕在线| 日韩欧美一二三四区| 91麻豆国产精品久久| 美女www一区二区| 亚洲黄色小视频| 精品99999| 欧美四级电影在线观看| 国产精品91xxx| 午夜精品久久久久久久99樱桃| 久久影音资源网| 欧美日韩国产成人在线91| 粉嫩一区二区三区在线看| 日韩国产欧美视频| 亚洲美女视频一区| 久久久久久久久一| 91精品国产综合久久久久久| 成人激情小说乱人伦| 三级成人在线视频| 亚洲欧美经典视频| 久久久久高清精品| 在线播放中文一区| 91偷拍与自偷拍精品| 国产原创一区二区| 水野朝阳av一区二区三区| 国产精品久久看| 国产亚洲综合在线| 在线91免费看| 在线看一区二区| 99视频精品免费视频| 国产一区二区三区四区在线观看| 同产精品九九九| 一区二区三区在线视频观看| 国产网站一区二区| 欧美电影免费观看高清完整版 | 国产成人一区二区精品非洲| 日本sm残虐另类| 亚洲成av人片| 亚洲女性喷水在线观看一区| 国产性做久久久久久| 日韩精品一区二区三区老鸭窝 | 国产精品白丝jk黑袜喷水| 日本免费在线视频不卡一不卡二| 亚洲中国最大av网站| 国产精品家庭影院| 国产清纯白嫩初高生在线观看91 | 精品久久久久久久久久久院品网 | 91网站视频在线观看| 懂色一区二区三区免费观看| 激情欧美一区二区| 美女脱光内衣内裤视频久久网站| 亚洲.国产.中文慕字在线| 一级精品视频在线观看宜春院| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 久久久久久9999| 久久久99精品久久| 国产亚洲成年网址在线观看| 精品日韩成人av| 久久亚洲春色中文字幕久久久| 日韩美一区二区三区| 欧美一区二区三区视频| 制服丝袜亚洲网站| 3atv在线一区二区三区| 4hu四虎永久在线影院成人| 91精品国产麻豆国产自产在线| 欧美日产国产精品| 欧美一区二区日韩一区二区| 欧美精品一二三区| 日韩三级在线免费观看| 日韩美女一区二区三区四区| 精品粉嫩超白一线天av| 久久精品视频在线免费观看| 久久精品夜色噜噜亚洲aⅴ| 欧美国产精品v| 亚洲色图色小说| 一区二区三区精品| 午夜精品一区二区三区三上悠亚| 午夜久久久久久久久久一区二区| 午夜久久福利影院| 蜜臀av一区二区在线免费观看| 久久精品国产77777蜜臀| 国产一区二三区| 成人午夜电影久久影院| 99久久精品99国产精品 | 国产激情91久久精品导航| 国产91精品露脸国语对白| jlzzjlzz亚洲女人18| 欧洲av一区二区嗯嗯嗯啊| 欧美肥大bbwbbw高潮| 精品久久一区二区三区| 欧美国产激情二区三区| 亚洲精品国产精华液| 日韩av高清在线观看| 久久国产精品一区二区| 国产成人午夜电影网| 94-欧美-setu| 欧美一区在线视频| 久久色.com| 亚洲摸摸操操av| 日韩精品福利网| 国产福利一区二区三区视频| 91视频xxxx| 欧美一区二区三区免费观看视频 | 欧美亚洲国产一卡| 欧美一卡二卡三卡| 欧美国产一区视频在线观看| 亚洲黄一区二区三区| 久久狠狠亚洲综合| 91网站黄www|