Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. WM_DRAWITEM does not process for tab control

WM_DRAWITEM does not process for tab control

Scheduled Pinned Locked Moved C / C++ / MFC
18 Posts 3 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Mark Salsbery

    The following code works for me... Note you have to have a tab control subclassed by an object of your CTabCtrl-derived class, otherwise DrawItem() will never get called...

    class CMyTabCtrl : public CTabCtrl
    {
    public:
    CMyTabCtrl() : CTabCtrl() {}

    virtual void DrawItem(LPDRAWITEMSTRUCT /\*lpDrawItemStruct\*/);
    

    };

    void CMyTabCtrl::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
    {
    CDC dc;
    dc.Attach(lpDrawItemStruct->hDC);

    // Note:  My test tab control has two tabs inserted :)
    
    if (0 == lpDrawItemStruct->itemID)
        dc.DrawText(\_T("Tab 1"), &lpDrawItemStruct->rcItem, DT\_CENTER);
    else
        dc.DrawText(\_T("Tab 2"), &lpDrawItemStruct->rcItem, DT\_CENTER);
    
    dc.Detach();
    

    }

    Mark Salsbery Microsoft MVP - Visual C++ :java:

    Y Offline
    Y Offline
    yaminisridaran
    wrote on last edited by
    #7

    Thanks for ur help I created a dialog based application. I selected a tab control and moved to my dialog . I have created an MFC class named CMyTabCtrl derived from CTabCtrl. I added ur code to it. I created a member variable in the dialog class for the tab control using class wizard which is CMyTabCtrl m_Tab I have selected the owner draw fixed properties But still the drawitem of CMyTabCtrl does not called. Please implement this and if u r getting let me know what u did.

    M 1 Reply Last reply
    0
    • Y yaminisridaran

      Thanks for ur help I created a dialog based application. I selected a tab control and moved to my dialog . I have created an MFC class named CMyTabCtrl derived from CTabCtrl. I added ur code to it. I created a member variable in the dialog class for the tab control using class wizard which is CMyTabCtrl m_Tab I have selected the owner draw fixed properties But still the drawitem of CMyTabCtrl does not called. Please implement this and if u r getting let me know what u did.

      M Offline
      M Offline
      Mark Salsbery
      wrote on last edited by
      #8

      I did the same - I used a DDX_Control() call in DoDataExchange() to subclass the control...

      void CMyDialog::DoDataExchange(CDataExchange* pDX)
      {
      CDialog::DoDataExchange(pDX);
      DDX_Control(pDX, IDC_TAB1, m_Tab); <-- make sure you use the right ID!!!
      }

      Mark Salsbery Microsoft MVP - Visual C++ :java:

      Y 1 Reply Last reply
      0
      • M Mark Salsbery

        I did the same - I used a DDX_Control() call in DoDataExchange() to subclass the control...

        void CMyDialog::DoDataExchange(CDataExchange* pDX)
        {
        CDialog::DoDataExchange(pDX);
        DDX_Control(pDX, IDC_TAB1, m_Tab); <-- make sure you use the right ID!!!
        }

        Mark Salsbery Microsoft MVP - Visual C++ :java:

        Y Offline
        Y Offline
        yaminisridaran
        wrote on last edited by
        #9

        I have done that. But still does not work Can u send me ur sample project.

        M 1 Reply Last reply
        0
        • Y yaminisridaran

          I have done that. But still does not work Can u send me ur sample project.

          M Offline
          M Offline
          Mark Salsbery
          wrote on last edited by
          #10

          It's a VS2008 project - is that OK?

          Mark Salsbery Microsoft MVP - Visual C++ :java:

          Y 1 Reply Last reply
          0
          • M Mark Salsbery

            It's a VS2008 project - is that OK?

            Mark Salsbery Microsoft MVP - Visual C++ :java:

            Y Offline
            Y Offline
            yaminisridaran
            wrote on last edited by
            #11

            ok

            1 Reply Last reply
            0
            • M Mark Salsbery

              The following code works for me... Note you have to have a tab control subclassed by an object of your CTabCtrl-derived class, otherwise DrawItem() will never get called...

              class CMyTabCtrl : public CTabCtrl
              {
              public:
              CMyTabCtrl() : CTabCtrl() {}

              virtual void DrawItem(LPDRAWITEMSTRUCT /\*lpDrawItemStruct\*/);
              

              };

              void CMyTabCtrl::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
              {
              CDC dc;
              dc.Attach(lpDrawItemStruct->hDC);

              // Note:  My test tab control has two tabs inserted :)
              
              if (0 == lpDrawItemStruct->itemID)
                  dc.DrawText(\_T("Tab 1"), &lpDrawItemStruct->rcItem, DT\_CENTER);
              else
                  dc.DrawText(\_T("Tab 2"), &lpDrawItemStruct->rcItem, DT\_CENTER);
              
              dc.Detach();
              

              }

              Mark Salsbery Microsoft MVP - Visual C++ :java:

              Y Offline
              Y Offline
              yaminisridaran
              wrote on last edited by
              #12

              Am I doing anything wrong in setting the properties of the tab control. Shall I send the sample code.

              M 1 Reply Last reply
              0
              • Y yaminisridaran

                Am I doing anything wrong in setting the properties of the tab control. Shall I send the sample code.

                M Offline
                M Offline
                Mark Salsbery
                wrote on last edited by
                #13

                It seems like you're doing everything.... Send me an email from here and I'll reply with the project. Mark

                Mark Salsbery Microsoft MVP - Visual C++ :java:

                Y 2 Replies Last reply
                0
                • M Mark Salsbery

                  It seems like you're doing everything.... Send me an email from here and I'll reply with the project. Mark

                  Mark Salsbery Microsoft MVP - Visual C++ :java:

                  Y Offline
                  Y Offline
                  yaminisridaran
                  wrote on last edited by
                  #14

                  I am waiting for ur reply

                  1 Reply Last reply
                  0
                  • M Mark Salsbery

                    It seems like you're doing everything.... Send me an email from here and I'll reply with the project. Mark

                    Mark Salsbery Microsoft MVP - Visual C++ :java:

                    Y Offline
                    Y Offline
                    yaminisridaran
                    wrote on last edited by
                    #15

                    It works now when i call insert item Thanks

                    M 1 Reply Last reply
                    0
                    • Y yaminisridaran

                      It works now when i call insert item Thanks

                      M Offline
                      M Offline
                      Mark Salsbery
                      wrote on last edited by
                      #16

                      Ohhh you had no tabs :) I guess the email through CodeProject isn't working yet....I sent one so I could get your address to send the project. Glad you got it working! Mark

                      Mark Salsbery Microsoft MVP - Visual C++ :java:

                      Y 1 Reply Last reply
                      0
                      • M Mark Salsbery

                        Ohhh you had no tabs :) I guess the email through CodeProject isn't working yet....I sent one so I could get your address to send the project. Glad you got it working! Mark

                        Mark Salsbery Microsoft MVP - Visual C++ :java:

                        Y Offline
                        Y Offline
                        yaminisridaran
                        wrote on last edited by
                        #17

                        Thanks for ur support

                        M 1 Reply Last reply
                        0
                        • Y yaminisridaran

                          Thanks for ur support

                          M Offline
                          M Offline
                          Mark Salsbery
                          wrote on last edited by
                          #18

                          You're welcome!

                          Mark Salsbery Microsoft MVP - Visual C++ :java:

                          1 Reply Last reply
                          0
                          Reply
                          • Reply as topic
                          Log in to reply
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes


                          • Login

                          • Don't have an account? Register

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Categories
                          • Recent
                          • Tags
                          • Popular
                          • World
                          • Users
                          • Groups