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

            統計

            常用鏈接

            留言簿

            隨筆分類

            文章分類

            文章檔案

            搜索

            最新評論

            久久99热这里只有精品国产| 亚洲欧美日韩久久精品第一区| 久久综合给合久久狠狠狠97色69 | 久久午夜无码鲁丝片秋霞| 开心久久婷婷综合中文字幕| 欧洲精品久久久av无码电影| 久久精品免费一区二区三区| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 一本久久久久久久| 久久精品国产免费观看| 99久久免费国产精品| 韩国免费A级毛片久久| 久久久久国产视频电影| 久久精品国产亚洲AV无码偷窥| 91久久精品国产免费直播| 欧美日韩精品久久久久| 国产亚洲精午夜久久久久久| 久久精品无码午夜福利理论片| 久久青青草原精品国产不卡| 久久99精品久久只有精品| 中文无码久久精品| 色诱久久av| 久久久久久亚洲精品无码| 99精品伊人久久久大香线蕉| 久久精品人人做人人爽97| 无码人妻精品一区二区三区久久久 | 99久久人妻无码精品系列| 日日狠狠久久偷偷色综合免费| 欧美综合天天夜夜久久| 色婷婷久久综合中文久久蜜桃av| 久久毛片一区二区| 一本久久综合亚洲鲁鲁五月天| 中文字幕亚洲综合久久2| 久久无码人妻一区二区三区| 少妇人妻88久久中文字幕| 亚洲AV无一区二区三区久久 | 国产精品18久久久久久vr| 久久丫精品国产亚洲av不卡| 久久久久久夜精品精品免费啦| 久久精品中文騷妇女内射| 日韩精品久久久肉伦网站 |