• <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 厚積薄發 閱讀(1298) 評論(0)  編輯 收藏 引用 所屬分類: Windows編程

            導航

            <2025年6月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345

            統計

            常用鏈接

            留言簿

            隨筆分類

            文章分類

            文章檔案

            搜索

            最新評論

            亚洲国产精品久久电影欧美| 久久91精品国产91久久麻豆| 亚洲国产精品久久久久| 93精91精品国产综合久久香蕉| 国产成人无码精品久久久久免费 | 久久精品国产精品亚洲| 亚洲а∨天堂久久精品9966| 一97日本道伊人久久综合影院| 久久国产亚洲高清观看| 久久狠狠一本精品综合网| A级毛片无码久久精品免费 | 久久免费香蕉视频| 久久久久久久亚洲Av无码| 国产激情久久久久影院| 无码人妻久久一区二区三区免费| 99久久精品免费看国产| 欧美一区二区三区久久综| 久久午夜无码鲁丝片午夜精品| 久久久久AV综合网成人| 一级女性全黄久久生活片免费| 久久精品国产影库免费看| 青草国产精品久久久久久| 久久亚洲国产成人影院网站| 久久天堂电影网| 久久综合精品国产二区无码| 国产精品久久久久久久久久影院| 99久久婷婷国产综合精品草原| 久久精品国产99久久久| 亚洲日韩欧美一区久久久久我| 国产午夜精品久久久久九九电影| 国内精品久久久久影院免费| 久久久久久人妻无码| 亚洲精品乱码久久久久66| 久久久久亚洲精品日久生情| 久久久精品人妻无码专区不卡 | 99久久婷婷国产综合亚洲| 色天使久久综合网天天| 久久久久亚洲AV无码观看| 久久精品无码一区二区WWW| 亚洲国产成人精品女人久久久 | 久久久久免费看成人影片|