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

            導航

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

            統計

            常用鏈接

            留言簿

            隨筆分類

            文章分類

            文章檔案

            搜索

            最新評論

            思思久久99热只有频精品66| 亚洲人成无码网站久久99热国产| 亚洲午夜精品久久久久久app| 狠狠人妻久久久久久综合蜜桃 | 2021久久国自产拍精品| 久久久青草青青亚洲国产免观| 免费精品久久久久久中文字幕| 97精品伊人久久大香线蕉app| 伊人久久大香线蕉影院95| 中文字幕无码免费久久| 精品久久久久久无码人妻蜜桃| 热综合一本伊人久久精品| 久久精品水蜜桃av综合天堂| 亚洲欧洲精品成人久久曰影片| 精品久久久久久国产| 久久久久久国产精品美女| 99久久国产综合精品网成人影院| 久久久久久亚洲精品影院| 国产精品亚洲综合专区片高清久久久| 亚洲国产视频久久| 99热热久久这里只有精品68| 久久久久人妻精品一区| 欧美激情一区二区久久久| 久久婷婷人人澡人人爽人人爱| 久久er热视频在这里精品| 精品国产一区二区三区久久| 久久精品一区二区三区AV| 久久se这里只有精品| 岛国搬运www久久| 久久被窝电影亚洲爽爽爽| 国产精品久久免费| 国产V综合V亚洲欧美久久| 色偷偷888欧美精品久久久| 久久精品www人人爽人人| 99精品国产99久久久久久97| 性高湖久久久久久久久AAAAA| 久久激情亚洲精品无码?V| 久久精品国产清自在天天线| 久久久久女教师免费一区| 久久久久九九精品影院| 亚洲欧美成人久久综合中文网|