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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? windows高級窗口的客戶區域拖動技術及其應用(轉載)下.txt

?? C_C++使用技巧全集
?? TXT
字號:
作者:chache
email: cyzhx@263.net
日期:2000-10-23 17:33:49
三、WINDOWS高級窗口客戶區域拖動技術實現的“三步曲” 

  WINDOWS 高級窗口的客戶區域拖動命令判斷、拖動功能的鼠標光標動態提示和定制窗口
拖動框函數之后,就需要實現整個拖動方案中的拖動過程啟動、窗口拖動框移動和拖動結束
處理的三步曲過程。于是必須在窗口函數中直接處理WM_LBUTTONDOWN、WM_MOUSEMOVE和WM_L
BUTTONUP消息,來具體處理上述三個步驟中的細節問題。 

  第一步,在窗口函數中對鼠標點擊消息WM_LBUTTONDOWN進行判斷處理,以處理用戶通過
鼠標光標動態提示功能獲取滿足窗口拖動條件時,按下鼠標左鍵產生的啟動拖動過程消息,
其功能性代碼如下: 

  POINT pt; 

  BOOL MoveFlag=FALSE; 

  case WM_LBUTTONDOWN: 

   pt = MAKEPOINT(lParam); //獲取鼠標光標指針 

   if(PtInRect(&DragRT,pt)){//DragRT為拖動命令區域 

   DragBegin((LPRECT)&WinRT,lParam,hWnd,2); 

   //啟動窗口拖動過程 

   } else {進行其它處理} 

   break; 

  上述DragBegin( )函數為筆者開發的窗口拖動啟動函數,由于一個高級窗口應用程序中
往往存在很多窗口,所以將其作為一個單獨函數處理。其中WinRT 為高級窗口矩形區域,這
里作為拖動框矩形區域參數來傳遞,lParam為鼠標光標指針長整數,hWnd為當前被拖動窗口
的句柄,2 為拖動框寬度。同時需要將鼠標控制權交給當前被拖動窗口、設置拖動窗口標志
單元、保存當前鼠標在屏幕上的位置并顯示被拖動窗口的拖動框。拖動功能啟動函數的原形
代碼如下: 

  void DragBegin( 

   LPRECT WinRect, //拖動框的矩形區域 

   LPARAM lParam, //鼠標光標當前指針 

   HWND hwnd, //當前窗口句柄 

   unsigned int kk) //拖動框顯示的寬度 

  { 

   SetCapture(hwnd); //拖動時窗口必須具有鼠標輸入權 

   MoveFlag=TRUE; //設置拖動標志 

   oldmx=LOWORD(lParam);//記錄當前鼠標屏幕坐標X 

   oldmy=HIWORD(lParam);//記錄當前鼠標屏幕坐標Y 

   DrawMoveRect(WinRect->left,WinRect->top,//顯示拖動框 

   WinRect->right,WinRect->bottom,kk); 

  } 

  第二步,需要處理鼠標拖動窗口時的拖動框移動過程,這需要在窗口函數中進行WM_MOU
SEMOVE消息處理。拖動框的移動包括上次顯示拖動框的清除和本次拖動框的顯示兩步,由于
拖動框繪制函數中對當前的繪制方式進行重新設置,異或方式使得只要重新在原屏幕坐標位
置處調用一次該函數即可清除拖動框,因此,在鼠標拖動窗口移動過程中顯示和清除拖動框
只需要調用兩次拖動框繪制函數即可。另外,拖動框在屏幕上位置的計算方法也非常簡單,
就是將當前取得的屏幕位置坐標值減去保存的前次屏幕位置坐標值所得鼠標移動偏移量,再
用原來窗口屏幕左上角坐標值加上這個偏移量,就可以確定被拖動窗口和拖動框新的屏幕位
置坐標值。其處理過程的描述性代碼如下: 

  case WM_MOUSEMOVE: 

   DragMove((LPRECT)&WinRT,WinWT,WinHi,lParam,2); 

   //WinRT為窗口矩形區域,WinWT為窗口寬度,WinHI為窗口高度 

   } else {進行其它處理} 

   break; 

  鑒于高級窗口應用程序一般為多個子窗口,所以將拖動框移動處理過程單獨編制成函數
,并且對鼠標拖動窗口過程中,窗口不能完全位于屏幕可見區域之內進行了特殊處理,開發
者可根據需要自行調整其位置,以便被拖動的窗口能夠完全被顯示于屏幕可視區域內,其拖
動過程函數原形代碼部分如下: 

  void DragMove( 

   LPRECT rcwin, //拖動框矩形區域 

   unsigned int wi, //被拖動窗口寬度 

   unsigned int hi, //被拖動窗口高度 

   LPARAM lParam, //鼠標位置指針 

   unsigned int kk) //拖動框邊框寬度 

  { 

   DrawMoveRect(rcwin->left,rcwin->top, 

   rcwin->right,rcwin->bottom,kk);//清除上次畫拖動框 

   rcwin->left+=LOWORD(lParam)-sImeG.oldmx;//計算窗口 

   rcwin->top+=HIWORD(lParam)-sImeG.oldmy; //新位置 

   sImeG.oldmx=LOWORD(lParam); //保存當前坐標值 

   sImeG.oldmy=HIWORD(lParam); 

   if (rcwin->left<0) rcwin->left=0;//對窗口超越屏幕 

   if (rcwin->left>sImeG.xScrWi-wi) //可視區域處理 

   rcwin->left=sImeG.xScrWi-wi; 

   ii=sImeG.yScrHi-hi-(sImeG.WinVer<0x35f ? 0:BOTOFF); 

   if (rcwin->top<0) rcwin->top=0; //對WIN95進行底部 

   if (rcwin->top>ii) rcwin->top=ii;//特殊保留處理 

   rcwin->right =rcwin->left+wi-1; 

   rcwin->bottom=rcwin->top+hi-1; 

   DrawMoveRect(rcwin->left,rcwin->top, 

   rcwin->right,rcwin->bottom,kk);//畫新位置拖動框 

  } 

  第三步,在鼠標拖動窗口結束時需要進行窗口的實際移動處理,這就需要在處理WM_LBU
TTONUP消息時利用MOVEWINDOW()命令進行實際移動處理。同樣鑒于多窗口原因仍然需要將這
個處理過程單獨形成一個函數,而且在移動窗口前還需要利用繪制函數清除屏幕上所畫的拖
動框,如果窗口未完全位于屏幕的可見位置,還必須進行適當調整使被拖動的窗口能夠完全
位于屏幕可視區內,同時釋放鼠標控制權并清除拖動窗口標志單元。結束過程的描述性代碼
部分如下: 

  case WM_LBUTTONUP: 

   if (sImeG.MoveFlag==TRUE){//拖動標志有效 

   DragEnd((LPRECT)&WinRT,WinWT,WinHI,hWnd); 

   } 

  拖動結束處理函數的原形代碼部分如下: 

  void DragEnd( 

   LPRECT rcwin, //拖動框矩形區域 

   unsigned int wi, //被拖動窗口寬度 

   unsigned int hi, //被拖動窗口高度 

   unsigned int kk) //拖動框邊框寬度 

  { 

   DrawMoveRect(rcwin->left,rcwin->top, 

   rcwin->right,rcwin->bottom,1); //清除拖動框 

   if (rcwin->left<0) rcwin->left=0;//對窗口超越屏幕 

   if (rcwin->left>sImeG.xScrWi-wi) //可視區域處理 

   rcwin->left=sImeG.xScrWi-wi; 

   ii=sImeG.yScrHi-hi-(sImeG.WinVer<0x35f ? 0:BOTOFF); 

   if (rcwin->top<0) rcwin->top=0; //對WIN95進行底部 

   if (rcwin->top>ii) rcwin->top=ii;//特殊保留處理 

   rcwin->right =rcwin->left+wi-1; 

   rcwin->bottom=rcwin->top+hi-1; 

   MoveWindow(hwnd,rcwin->left,rcwin->top, 

   wi,hi,TRUE); //將窗口實際移到新位置 

   sImeG.MoveFlag=FALSE; //清除拖動標志單元 

   ReleaseCapture(); //釋放鼠標控制權 

  } 

  四、WINDOWS高級窗口的客戶區域拖動技術的實際應用 

  上述介紹的WINDOWS 高級窗口客戶區域拖動技術的有關技術和拖動方案“三步曲”的實
現過程,這些技術原理在WINDOWS95和WINDOWS3.X下同樣適應,但由于消息是WINDOWS系統中
的最后一道防線,如果處理得不好就會使應用程序“誤入歧途”,影響開發效率和程序效果
,若處理得恰到好處就會使你的應用程序具有很高的專業水準,如虎添翼。因此,實現適合
自己應用程序的有效拖動方案,對開發不同應用的影響和程序的運行效率具有深遠的影響。
雖然實現WINDOWS 高級窗口應用程序拖動方案的方法不止一種,但筆者仍未見過更加簡捷高
效的拖動方案,本文介紹的實現方案較具有很好的適應性和優秀的運行效果,具體表現在:
 

  開發者可根據自己的實際需要控制窗口拖動框的大小、拖動框顏色和拖動框的具體圖案
,具有拖動命令區域的鼠標光標動態提示功能,窗口拖動功能的啟動、拖動過程和拖動結束
處理均是獨立的子程序可提供給多窗口應用程序直接調用,啟動過程選擇靈活,在拖動結束
時可隨時控制被拖動窗口全部顯示在屏幕可見區域內,其它功能擴充簡便靈活,程序的運行
效果理想等等。 

  本文給出的WINDOWS 高級窗口拖動方案描述性功能代碼和通用子程序,均在筆者開發的
“輕松使用漢字輸入法”程序中實際應用,是這個程序中實現窗口拖動功能的關鍵代碼,均
在WINDOWS95和WINDOWS3.X下試用效果很好,因此推薦讀者開發應用時將其作為首選方案。 

  在本文介紹的基礎上,相信讀者對WINDOWS 高級窗口的客戶區域拖動技術有了全面了解
,同時為開發具有客戶區域拖動窗口的應用程序提供了可行的實現方案,希望讀者在此基礎
上進行深入研究,以開發出更加理想的WINDOWS 高級窗口客戶區域拖動方案,編制出更加具
有專業特色的WINDOWS高級應用程序。 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合久久久网| 国产精品网曝门| 欧美日韩国产一级片| 色综合久久中文综合久久牛| 99久久久国产精品| 99久久er热在这里只有精品66| 国产大陆精品国产| 国产.欧美.日韩| 国产91精品一区二区麻豆亚洲| 国产不卡视频一区二区三区| 国产精品一区在线观看乱码| 国产成人小视频| 成人免费视频免费观看| 成人伦理片在线| 91丨国产丨九色丨pron| 欧美怡红院视频| 日韩欧美在线影院| 欧美一级在线视频| 精品三级av在线| 久久免费偷拍视频| 综合久久久久久| 亚洲一区成人在线| 日韩电影在线免费看| 韩国三级在线一区| 99视频超级精品| 91电影在线观看| 欧美一区二区三区四区高清| 欧美va亚洲va香蕉在线| 国产日韩三级在线| 亚洲视频一区在线| 五月婷婷欧美视频| 国产一区二区三区不卡在线观看 | 亚洲一二三四区| 日日夜夜免费精品| 国产一区二区精品久久91| 北条麻妃一区二区三区| 欧美日本一区二区| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 国产精品成人免费| 亚洲成人资源在线| 国产成人综合在线观看| 色综合中文字幕国产| 精品视频999| 26uuu色噜噜精品一区二区| 亚洲色图19p| 日韩精品久久理论片| 国产成人av影院| 欧美视频一区二区三区| 久久久久免费观看| 五月婷婷另类国产| 成人国产亚洲欧美成人综合网| 欧美视频三区在线播放| 久久午夜国产精品| 亚洲综合免费观看高清在线观看| 精品制服美女丁香| 欧美亚洲精品一区| 国产午夜精品一区二区| 五月婷婷色综合| av中文字幕亚洲| 欧美精品一区二区三区蜜桃| 亚洲一区成人在线| 国产成人av一区二区三区在线观看| 欧美亚洲免费在线一区| 国产精品天天看| 美女视频网站久久| 日本高清不卡在线观看| 久久九九久久九九| 免费成人你懂的| 色久优优欧美色久优优| 久久久精品天堂| 日韩不卡免费视频| 欧美色欧美亚洲另类二区| 麻豆成人免费电影| 一本色道久久综合亚洲aⅴ蜜桃| 26uuu另类欧美| 蜜臀久久99精品久久久久宅男| 成人av网在线| 久久久亚洲午夜电影| 日韩不卡一二三区| 精品视频在线免费看| 亚洲视频免费在线观看| 国产馆精品极品| 欧美大肚乱孕交hd孕妇| 午夜精品视频一区| 91行情网站电视在线观看高清版| 国产日韩精品一区| 国产一区二区在线电影| 日韩一区和二区| 午夜精品123| 欧美亚洲尤物久久| 一区二区三国产精华液| 99国产精品久久久久久久久久| 久久香蕉国产线看观看99| 精品一区二区三区免费毛片爱| 欧美日韩国产首页| 亚洲国产精品久久久久秋霞影院| 91色九色蝌蚪| 亚洲人吸女人奶水| 91偷拍与自偷拍精品| **欧美大码日韩| 99久久伊人久久99| 国产精品成人免费在线| 91在线一区二区| 亚洲色欲色欲www在线观看| jlzzjlzz国产精品久久| 中文字幕一区二区三区四区不卡| 丁香五精品蜜臀久久久久99网站| 久久久久综合网| 国产超碰在线一区| 国产精品国产三级国产有无不卡 | 欧美va亚洲va在线观看蝴蝶网| 日韩电影网1区2区| 日韩欧美国产系列| 韩国精品主播一区二区在线观看| 日韩精品一区二区三区在线观看| 久久精品国产精品亚洲红杏| 精品久久久久久无| 国产成人精品亚洲777人妖| 中文字幕av一区二区三区| 成人激情电影免费在线观看| 日韩一区欧美小说| 欧美网站大全在线观看| 午夜精品福利一区二区三区av| 91麻豆精品国产自产在线观看一区 | 视频一区二区三区在线| 91精品国产乱码| 国产精品99久久久| 亚洲视频中文字幕| 欧美精品三级日韩久久| 久久国产夜色精品鲁鲁99| 久久亚洲综合av| zzijzzij亚洲日本少妇熟睡| 一区二区成人在线视频| 911国产精品| 国产伦精一区二区三区| 国产欧美日韩不卡| 欧美在线综合视频| 久久精品久久综合| 中文幕一区二区三区久久蜜桃| 91久久国产综合久久| 日本强好片久久久久久aaa| 欧美精品一区二区三区蜜桃视频| 成人av网站在线| 天堂蜜桃一区二区三区| 久久久久久麻豆| 一本到三区不卡视频| 日韩成人伦理电影在线观看| 欧美经典一区二区| 欧美日韩不卡一区二区| 国产不卡在线视频| 午夜成人在线视频| 国产婷婷色一区二区三区四区| 欧美专区亚洲专区| 国产一区二区三区视频在线播放| 亚洲精品写真福利| 日韩一区二区三区精品视频| 成人精品亚洲人成在线| 婷婷中文字幕一区三区| 国产精品久久久久久久久图文区| 欧美二区三区的天堂| 丁香亚洲综合激情啪啪综合| 日韩激情视频网站| √…a在线天堂一区| 日韩精品综合一本久道在线视频| 91免费视频网址| 国产在线一区二区| 亚洲chinese男男1069| 国产目拍亚洲精品99久久精品| 8x8x8国产精品| 99久久er热在这里只有精品66| 极品瑜伽女神91| 午夜在线成人av| 亚洲青青青在线视频| 久久先锋影音av鲁色资源网| 欧美丰满美乳xxx高潮www| 91麻豆文化传媒在线观看| 狠狠色丁香久久婷婷综合_中 | 欧美自拍偷拍一区| 懂色av一区二区夜夜嗨| 精品一区精品二区高清| 手机精品视频在线观看| 亚洲天堂中文字幕| 国产欧美精品在线观看| 日韩精品最新网址| 欧美福利一区二区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 国产成人av电影在线观看| 蜜桃91丨九色丨蝌蚪91桃色| 午夜欧美电影在线观看| 亚洲自拍偷拍九九九| 亚洲免费av高清| 国产精品麻豆视频| 国产日韩欧美精品电影三级在线| 日韩一区二区在线看片| 欧美老肥妇做.爰bbww| 欧美最猛性xxxxx直播| 色丁香久综合在线久综合在线观看| 成人sese在线| 99麻豆久久久国产精品免费优播| 国产91在线看|