• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            yehao's Blog

            公用控件的消息分類 WM_NOTIFY詳解

            http://hi.baidu.com/422053362/item/86b5bc088a8801006c9048eb

            公用控件分為三類消息,

            第一類消息:由應用程序發送給控件的消息,用于改變控件的屬性或使用控件的功能

            用SendMessage or PostMessage as so on.


            例如以下消息都是:

            ACM_OPEN
            ACM_PLAY
            ACM_STOP


            SB_GETBORDERS
            SB_GETICON
            SB_GETPARTS
            SB_GETRECT
            SB_GETTEXT
            SB_GETTEXTLENGTH
            SB_GETTIPTEXT
            SB_GETUNICODEFORMAT
            SB_ISSIMPLE
            SB_SETBKCOLOR
            SB_SETICON
            SB_SETMINHEIGHT
            SB_SETPARTS
            SB_SETTEXT
            SB_SETTIPTEXT
            SB_SETUNICODEFORMAT
            SB_SIMPLE

            TB_ADDBITMAP
            TB_ADDBUTTONS
            TB_ADDSTRING
            TB_AUTOSIZE
            TB_BUTTONCOUNT
            TB_BUTTONSTRUCTSIZE
            TB_CHANGEBITMAP
            TB_CHECKBUTTON

            第二類消息:在控件上有event發生時,控件給父窗口發送的消息,包括:

            WM_NOTIFY:
            WM_NOTIFYFORMAT:用來決定窗口 在WM_NOTIFY消息中是接收ANSI還是Unicode 結構體

            第三類消息:其實不能算獨立的消息,而是通知碼,英文叫Notification Messages,或者說是附加消息,一般是附加在第二類消息WM_NOTIFY或者WM_COMMAND消息的lParam上

            像以下這些消息:
            NM_CHAR
            NM_CUSTOMDRAW
            NM_CLICK
            NM_DBLCLK
            NM_HOVER
            NM_KEYDOWN
            NM_KILLFOCUS
            NM_NCHITTEST
            NM_OUTOFMEMORY
            NM_RCLICK
            NM_RDBLCLK
            NM_RELEASEDCAPTURE
            NM_RETURN
            NM_SETCURSOR
            NM_SETFOCUS
            NM_TOOLTIPSCREATED


            ACN_START//附加在WM_COMMAND消息上
            ACN_STOP//附加在WM_COMMAND消息上


            NM_CLICK (status bar)
            NM_DBLCLK (status bar)
            NM_RCLICK (status bar)
            NM_RDBLCLK (status bar)
            SBN_SIMPLEMODECHANGE


            TBN_BEGINADJUST
            TBN_BEGINDRAG
            TBN_CUSTHELP
            TBN_DELETINGBUTTON
            TBN_DRAGOUT
            TBN_DROPDOWN
            TBN_ENDADJUST
            TBN_ENDDRAG
            TBN_GETBUTTONINFO
            TBN_GETDISPINFO
            TBN_GETINFOTIP
            TBN_GETOBJECT
            TBN_HOTITEMCHANGE
            TBN_QUERYDELETE
            TBN_QUERYINSERT
            TBN_RESET
            TBN_TOOLBARCHANGE
            TTN_GETDISPINFO
            TTN_POP
            TTN_SHOW


            下面主要講述WM_NOTIFY消息

            其附加消息中,wParam是idCtrl;lParam是一個指針,指向NMHDR結構體 或者是 指向第一個成員是NMHDR結構體的結構體,上面說的第三類消息就附加在這里面

            下面的例子說明了一個問題:不同控件同樣是發送WM_NOTIFY消息,但是lParam卻可以指向不同的結構體

            case WM_NOTIFY:
               phdr=(NMHDR*)lParam;//不管lParam是指向什么結構體,起始部分都是NMHDR
               switch(phdr->code)//根據通知碼的不同,從而知道指向什么結構體
               {
                case TVN_BEGINDRAG://說明lParam指向的是一個NM_TREEVIEW結構體
                 ptree=(NM_TREEVIEW*)lParam;

                 break;
                case NM_CUSTOMDRAW://可以發送NM_CUSTOMDRAW通知碼的控件很多
                 pcd=(NMCUSTOMDRAW*)lParam;
                 if(wParam==ID_HWNDTREE)//如果是TREEVIEW控件發送的
                 {
                  ptvcd=(NMTVCUSTOMDRAW*)lParam;
                  if(ptvcd->nmcd.dwDrawStage==CDDS_PREPAINT)//Before the painting cycle begins
                  {
                   //the control will send NM_CUSTOMDRAW notification messages to the parent,before and after drawing items 
                   return CDRF_NOTIFYITEMDRAW;
                  }
                  if(ptvcd->nmcd.dwDrawStage==CDDS_ITEMPREPAINT)//Before an item is drawn
                  {
                   newfont=(HFONT)GetStockObject(ANSI_FIXED_FONT);
                   SelectObject(ptvcd->nmcd.hdc,newfont);
                   ptvcd->clrText=#ff0000;
                   ptvcd->clrTextBk=#009632;
                   return CDRF_NEWFONT;
                  }
                 }
                 break;
                default:
                 break;

               }
               break;

            posted on 2014-03-07 14:12 厚積薄發 閱讀(1310) 評論(0)  編輯 收藏 引用 所屬分類: Windows編程

            導航

            <2025年8月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            統計

            常用鏈接

            留言簿

            隨筆分類

            文章分類

            文章檔案

            搜索

            最新評論

            韩国免费A级毛片久久| 久久人妻少妇嫩草AV无码蜜桃| 久久久免费观成人影院| 亚洲精品乱码久久久久久自慰| 香蕉久久夜色精品国产小说| 久久久综合香蕉尹人综合网| 亚洲精品无码久久不卡| 色99久久久久高潮综合影院 | 久久亚洲视频| 99久久精品免费看国产免费| 久久无码av三级| 久久免费看黄a级毛片| 国产精品亚洲综合久久 | 麻豆成人久久精品二区三区免费 | 亚洲精品tv久久久久久久久| 狠狠综合久久AV一区二区三区| 99蜜桃臀久久久欧美精品网站| 亚洲国产精品久久电影欧美| 精品国产VA久久久久久久冰| 久久成人国产精品一区二区| 怡红院日本一道日本久久 | 久久久WWW成人| 66精品综合久久久久久久| 中文字幕日本人妻久久久免费 | 亚洲国产小视频精品久久久三级| 亚洲国产精品嫩草影院久久| 一本久久a久久精品亚洲| 99久久成人18免费网站| 2021国产精品久久精品| 久久精品国产亚洲AV高清热| 久久福利片| 国产三级久久久精品麻豆三级| 精品久久久久久久久久久久久久久| 综合久久精品色| 午夜不卡888久久| 无码人妻久久久一区二区三区| 久久精品国产亚洲一区二区| 久久久久免费精品国产| 91亚洲国产成人久久精品网址 | 久久人人爽人人爽人人片av高请| 精品熟女少妇aⅴ免费久久|