《原創》實現禁止 WTL CTabView 中標籤的拖曳行為。 (Disable Dragging Operation of CTabView)

1. Abstract

如何禁止WTL CTabViewTabDragging行為?

 

2. Introduction

因在專案中使用Tab的功能去進行頁面的分類,但是卻又不希望使用者改變Tab的順序。經過對 CTabViewImpl 這個ClassTrace之後發現 CTabViewImplDragging行為的處理分配在 dwMsgMapId == 1的這個 Message Map分流中,所以只要Pending掉這個 MessageMap就可以達到我們要的功能了。


相關做法如下:


Step 1:

先繼承 CTabViewImpl

(class CCustomTabView : public CTabViewImpl<CCustomTabView> ….. )

 

Step 2:

依照WTL編寫慣例加上 BEGIN_MSG_MAP(CCustomTabView) END_MSG_MAP() Macros.

 

Step 3:

CCustomTabViewMessage Map Macros 中加入 CHAIN_MSG_MAP(CTabViewImpl<CCustomTabView>) ALT_MSG_MAP(1) 這樣就可以完成我們所需要的功能了。

 

Sample

 1 class CCustomTabView : public CTabViewImpl<CCustomTabView>
 2 {
 3 public:
 4     DECLARE_WND_CLASS_EX(_T("CCustomTabView"), 0, COLOR_APPWORKSPACE)
 5 
 6     BEGIN_MSG_MAP(CCustomTabView)
 7         CHAIN_MSG_MAP(CTabViewImpl<CCustomTabView>//粉重要讓dwMsgMapID == 0的消息分流可以繼續處理
 8         ALT_MSG_MAP(1)                                                            //Disable Draging
 9     END_MSG_MAP()
10 
11 ---- 略 ----
12 };
13 


 

3. Conclusion

未來可以在 dwMsgMapID == 1這個分流上實作 Switch的方式來 Enable/Disable Dragging行為。

 

4. Reference

NULL

原文地址:https://www.cnblogs.com/awen/p/1295214.html