中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Windows核心編程(4)-創(chuàng)新互聯(lián)

一、窗口非客戶區(qū)的鼠標消息

成都創(chuàng)新互聯(lián)主要從事成都網(wǎng)站設計、成都做網(wǎng)站、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務金鳳,十多年網(wǎng)站建設經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:18982081108

1.WM_NCMOUSEMOVE  鼠標移動

鼠標左鍵

WM_NCLBUTTONDOWN 按下

WM_NCLBUTTONUP  松開

WM_NCLBUTTONDBLCLK 雙擊

鼠標右鍵

WM_NCRBUTTONDOWN 按下

WM_NCRBUTTONUP  松開

WM_NCRBUTTONDBLCLK 雙擊

鼠標中鍵

WN_NCMBUTTONDOWN 按下

WM_NCMBUTTONUP 松開

WM_NCMBUTTONDBLCLK 雙擊



二.WM_NCHITTEST消息

1.是操作系統(tǒng)發(fā)給鼠標下面的窗口,以便確定鼠標是在窗口的哪個部分


上面,所有的窗口鼠標消息產(chǎn)生之前都是要先響應該消息,該消息由默認

窗口消息處理程序處理,返回值提示鼠標所在區(qū)域

HTCAPTION 在非客戶區(qū)標題欄上

HTCLIENT 客戶區(qū)

HTCLOSE 在關閉按鈕上

HTHELP 非客戶區(qū)幫助按鈕

HTMAXBUTTON 大化按鈕

HTMINBUTTON 最小化按鈕

HTTRANSPARENT 鼠標穿過窗口

...

2.滾輪消息 WM_MOUSEWHEEL

它表示鼠標被滾動的消息,這個消息不限于客戶區(qū),也不限于非客戶區(qū)


WPARAM參數(shù) 低16位表示哪個鍵被按下, 高16位表示滾動的距離

正值表示向前滾動,負值向后滾動.

LPARAM參數(shù) 低16客戶區(qū)X坐標  高16位客戶區(qū)Y坐標

三.SetWindowPos函數(shù)

1.改變窗口的位置,大小和Z-Order.并且可以設置窗口的顯示狀態(tài)

HWND hWnd 要改變位置,大小,或Z-Order的窗口

HWND hWndInsertAfter 窗口句柄 hWnd在Z-Order上將被置于他后面

int x,int y 窗口的位置


int cx,int cy 窗口大小

UINT uFlags操作標準

成功返回TRUE 失敗返回FALSE

uFlags參數(shù)

SWP_NOSIZE    維持當前窗口大小.就是忽略cx和cy參數(shù)

SWP_NOMOVE    維持當前窗口的位置,也就是忽略X和Y參數(shù)

SWP_NOZORDER  不改變窗口Z-Order次序

SWP_NOOWNERZORDER 不改變Z序中所有者窗口位置

SWP_NOREDRAW  不重繪窗口

SWP_NOSENDCHANGING 不發(fā)送窗口位置改變消息

SWP_FRAMECHANGED  強制窗口標題欄以及邊框重繪,即發(fā)送WM_NCPAINT消息

SWP_HIDEWINDOW  隱藏窗口

SWP_SHOWWINDOW  顯示窗口

SWP_NOACTIVATE  不激活窗口

四.多個窗口同步移動的方法

BeginDeferWindowPos 返回用于存儲多窗口位置和大小信息的句柄HWND


DeferWindowPos函數(shù)把指定窗口的新位置大小信息存儲在句柄HDWP中

EndDeferWindowPos最好調(diào)用EndDeferWindowPos來同時更新之前存儲好的多窗口位置大小

HDWP BeginDeferWindowPos(

    int nNumWindos 村粗幾個窗口的位置大小信息


) 返回值為多窗口的位置跟大小信息

DeferWindowPos(

    HDWP hWinPosInfo,BeginDeferWindowPos返回的多窗口位置跟大小信息句柄

    HWND hWnd,  要改變位置或大小信息的窗口

    HWND hWndInsertAfter,


    int x,int y,    窗口位置


    int cx,int cy,窗口大小


    UINT uFlags, //跟SetWindowPos的uFlags參數(shù)一樣


)

EndDeferWindowPos(

    HDWP hWinPosInfo eginDeferWindowPos返回的多窗口位置跟大小信息句柄

)

函數(shù)返回TRUE 成功,FALSE失敗

五、菜單函數(shù)

1.HMENU WINAPI CreateMenu(VOID)

 HMENU WINAPI CreatePopupMenu(VOID)

2.這兩函數(shù)都返回了創(chuàng)建后的菜單的句柄.這兩個函數(shù)的區(qū)別:

CreateMenu是創(chuàng)建水平菜單,通常是放置在頂級窗口中,

同時也是作為頂級菜單的,就行我們經(jīng)??吹降?quot;文件"

編輯,等菜單

6CreatePopupMenu創(chuàng)建的是一個垂直的彈出菜單,

經(jīng)常被用來做另一個菜單的子菜單或者右鍵菜單

3.銷毀菜單的函數(shù) BOOL WINAPI DestoryMenu(HMENU hMenu)

4.添加菜單項


BOOL WINAPI AppendMenu(

HMENU hMenu,  //要修改的菜單

UINT uFlag,  //新菜單選項的狀態(tài)信息,

MF_STRING 新建一個字符串菜單選項

MF_BITMAP 新建一個位圖菜單選項

MF_POPUP 新選項為一個彈出式菜單

MF_CHECKED 新選項為一個已選中的菜單選項,即菜單選項前面有一個打鉤

MF_DISABLED 新建一無法選中的菜單項,但外觀不變灰

MF_GRAYED 新菜單選項無效,用戶無法選中該選項, 且外觀變灰

UINT_PTR uIDNewItem, //新菜單選項的命令ID

LPCWSTR lpNewItem  //新菜單選項的內(nèi)容,

如果是MF_BITMAP 則為位圖的句柄,否則為顯示在菜單項上的內(nèi)容.

)


5.設置菜單項的前面是否要打鉤

DWORD CheckMenuItem(

HMENU hMenu,  //要設置的菜單句柄

UINT uIDCheckItem, 要設置的菜單項

要么是菜單的ID,要么是索引值,值類型取決于 uCheck

UINT uCheck

MF_BYCOMMAND 指明使用菜單項的ID

MF_BYPOSITION 指明菜單項使用索引值

MF_CHECKED: 為菜單添加打鉤標志 
MF_UNCHECKED 去除打鉤標志

6.禁用一個菜單項

BOOL EnableMenuItem

參數(shù)1 hMenu 菜單句柄

參數(shù)2 和上面一樣

參數(shù)3

MF_BYCOMMAND 指明使用菜單項的ID

MF_BYPOSITION 指明菜單項使用索引值

MF_DISABLED 設置菜單項禁用 但不變灰

MF_ENABLED 設置菜單項啟用

MF_GRAYED 設置菜單項禁用,選項變灰



7.在指定位置顯示一個彈出菜單

BOOL TrackPopupMenu

參數(shù)1 菜單句柄

參數(shù)2 uFlags 菜單屬性

int x,int y,屏幕坐標系,菜單的左上角坐標

int nReserved,保留著 為0即可


HWND hWnd 此窗口接收菜單的消息

函數(shù)返回前,此窗口不接收菜單的WM_COMMAND消息

CONST RECT*prcRect 保留值 NULL即可

uFlag參數(shù)屬性:

設置菜單的水平方向的定位

TPM_CENTERALIGN: 彈出的菜單中心位置與參數(shù)x對齊

TPM_LEFTALIGN: 彈出的菜單左邊界位置與參數(shù)x對齊

TPM_RIGHTALIGN: 彈出的菜單右邊界位置與參數(shù)x對齊

設置菜單的垂直方向定位

TPM_BOTTOMALIGN: 彈出的菜單底邊界與參數(shù)y對齊

TPM_TOPALIGN: 彈出的菜單頂邊界位置與參數(shù)y對齊

TPM_VCENTERALIGN: 彈出的菜單中心位置與參數(shù)y對齊

設置菜單是否向窗口發(fā)送消息

TPM_NONOTIFY 用戶選擇菜單項后 不發(fā)送消息給窗口

TPM_RETURNCMD 用戶選擇菜單后,直接把菜單項的ID返回到返回值里

設置用戶要鼠標的哪個鍵來選擇菜單

TPM_LEFTBUTTON 鼠標左鍵

TPM_RIGHTBUTTON 鼠標右鍵

六、廣播消息

1.SendMessage 只能發(fā)送一個消息給一個窗口

如果要給多個窗口發(fā)送同一個消息的話,就要用到廣播消息

2.把某個消息廣播給指定的接收者,接收者可以是一個應用程序

網(wǎng)絡驅(qū)動器,系統(tǒng)級設備驅(qū)動器,應用程序的頂級窗口


也能接收到廣播消息,

3.廣播消息的消息值 必須是系統(tǒng)中已經(jīng)注冊的消息值

所以是不能使用自定義消息的.

4.向Windows注冊消息

UINT RegisterWindowMessage函數(shù)

注冊一個新的窗口消息.保證該消息的值在體統(tǒng)范圍內(nèi)是唯一的

參數(shù) LPCTSTR lpString  被注冊的消息的名字

返回 被注冊的消息值

5.廣播系統(tǒng)已注冊的消息

long BroadcastSystemMessage

(

DWORD flags 選項

BSF_QUERY 每次發(fā)送消息給一接收者,只有接收者返回TURE才發(fā)送給下一個接受者

BSF_NOHANG 把掛起的應用程序當成超時,有一個接受者超時,就停止廣播

BSF_NOTIMEOUTINFOTHUNG 只要接收者沒掛起,一直等待消息響應,不會出現(xiàn)超時

BSF_FORCEIFHUNG 繼續(xù)廣播消息,即使超時或者接受者掛起

BSF_POSTMESSAGE 寄送消息,不等待消息響應,直接返回

BSF_IGNORECURRENTTASK 不發(fā)送消息給屬于當前任務的窗口,這樣應用程序就不會接收自己的消息

LPDWORD lpInfo 指向接受者信息的DWORD指針 并可以為下列值組合

BSM_ALLCOMPONENTS 廣播到所有的系統(tǒng)組件

BSM_ALLDESKTOPS 廣播到所有桌面

BSM_APPLICATIONS 廣播到應用程序

UINT Msg 消息ID

WPARAM wParam消息參數(shù)

LPARAM 消息參數(shù)

)

七、動態(tài)的將一個窗口嵌入到一個窗口

1.首先這個窗口樣式一開始是Popup,

當你拖動這個窗口到要嵌入的窗口,然后你修改樣式為WM_CHILD

2. 設置父窗口


HWND SetPaert(

參數(shù)1 hWndChild  指定的窗口新父窗口的子窗口

參數(shù)2 hWndNewParent  新父窗口

返回值 hWndChild之前的父窗口

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

網(wǎng)站欄目:Windows核心編程(4)-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://www.rwnh.cn/article38/dhhssp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、用戶體驗、建站公司、ChatGPT、定制開發(fā)、網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
醴陵市| 盐池县| 浪卡子县| 叙永县| 郑州市| 云林县| 闽清县| 灌南县| 和政县| 蓬莱市| 胶南市| 元江| 彩票| 巴塘县| 临邑县| 正定县| 华安县| 叶城县| 伊宁县| 珲春市| 剑川县| 汤阴县| 繁峙县| 马龙县| 四会市| 武清区| 金阳县| 伊川县| 若尔盖县| 芒康县| 仁寿县| 亚东县| 昌邑市| 行唐县| 遵义市| 伊吾县| 许昌市| 土默特右旗| 晋州市| 镇远县| 哈尔滨市|