• <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

            統計

            常用鏈接

            留言簿

            隨筆分類

            文章分類

            文章檔案

            搜索

            最新評論

            日韩精品国产自在久久现线拍| 亚洲人成电影网站久久| 无码人妻久久一区二区三区 | 丁香色欲久久久久久综合网| 亚洲国产成人精品女人久久久 | 国产精品久久久久久影院| 久久精品一区二区三区不卡| 国内精品伊人久久久久网站| 伊人久久国产免费观看视频| 久久99精品国产99久久6男男| 狠狠色丁香婷婷综合久久来来去| 久久亚洲国产最新网站| 九九久久99综合一区二区| 香港aa三级久久三级老师2021国产三级精品三级在 | 伊人丁香狠狠色综合久久| 久久福利资源国产精品999| 久久久久亚洲AV无码网站| 亚洲精品国精品久久99热| 久久99国产精品久久| 久久久久久久久波多野高潮| 93精91精品国产综合久久香蕉| 久久精品青青草原伊人| 女人香蕉久久**毛片精品| 亚洲国产另类久久久精品小说 | 久久大香萑太香蕉av| 国产精品伊人久久伊人电影| 亚洲午夜久久久影院伊人| 日本国产精品久久| 国产日韩久久免费影院| 久久综合久久综合久久| 91久久婷婷国产综合精品青草| 伊人久久大香线蕉亚洲| 亚洲AV伊人久久青青草原| 久久精品国产亚洲7777| 国产精品久久久久久久午夜片| 99精品久久久久中文字幕| 久久综合九色综合网站| 少妇精品久久久一区二区三区| 亚洲精品乱码久久久久久蜜桃图片 | 人妻精品久久久久中文字幕69 | 久久免费国产精品|