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. How do I completely take over drawing for a listbox

How do I completely take over drawing for a listbox

Scheduled Pinned Locked Moved C / C++ / MFC
questionc++graphicsjsonhelp
3 Posts 2 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.
  • K Offline
    K Offline
    KellyR
    wrote on last edited by
    #1

    Hi, I asked a question sort of similar to this a few days ago, but the problem has now evolved; what I want to do is: I am using C++ with the windows API, without MFC. I want to retain all the functionality of a listbox but I want to draw everything myself. If I set the style to OWNERDRAW I can at least draw the listbox items and the box itself (if I don't give it border) but I still can't draw any scrollbars created using WS_VSCROLL or WS_HSCROLL; they seem to use the default windows drawing behavior. So how do I completely override all the default drawing for a listbox (or any windows control for that matter)? I don't want to draw over the default scrollbars; I want them to simply not draw at all, but still "exist" and allow me to ownerdraw them. Thanks!

    KR

    enhzflepE 1 Reply Last reply
    0
    • K KellyR

      Hi, I asked a question sort of similar to this a few days ago, but the problem has now evolved; what I want to do is: I am using C++ with the windows API, without MFC. I want to retain all the functionality of a listbox but I want to draw everything myself. If I set the style to OWNERDRAW I can at least draw the listbox items and the box itself (if I don't give it border) but I still can't draw any scrollbars created using WS_VSCROLL or WS_HSCROLL; they seem to use the default windows drawing behavior. So how do I completely override all the default drawing for a listbox (or any windows control for that matter)? I don't want to draw over the default scrollbars; I want them to simply not draw at all, but still "exist" and allow me to ownerdraw them. Thanks!

      KR

      enhzflepE Offline
      enhzflepE Offline
      enhzflep
      wrote on last edited by
      #2

      Did you see this[^]article?

      Greg Ellis wrote:

      Next, I had to find a way to customize the existing scrollbars or else make my own. So, I tried to subclass the CScrollbar class; whenever I tried to use the GetScollbarCtrl() function from the CListCtrl, it returned null. Obviously, the scrollbars are not real. Unfortunately, this means I had to hide the existing scrollbars and create my own (a lot more work than just skinning the existing ones). I began to try to hide the scrollbars of the CListCtrl and then somehow create my own. I found a solution for hiding the scrollbars in a CListCtrl on the CodeGuru message boards from Filbert Fox. This worked great, so my next task was to create my own scrollbars. I chose to derive a class from CStatic and create the scrollbar from scratch using bitmaps. It took a while and a lot of tweaking, but I got the custom scrollbar created and working including the wheel mouse, arrow keys, and pageup/pagedown keys.

      K 1 Reply Last reply
      0
      • enhzflepE enhzflep

        Did you see this[^]article?

        Greg Ellis wrote:

        Next, I had to find a way to customize the existing scrollbars or else make my own. So, I tried to subclass the CScrollbar class; whenever I tried to use the GetScollbarCtrl() function from the CListCtrl, it returned null. Obviously, the scrollbars are not real. Unfortunately, this means I had to hide the existing scrollbars and create my own (a lot more work than just skinning the existing ones). I began to try to hide the scrollbars of the CListCtrl and then somehow create my own. I found a solution for hiding the scrollbars in a CListCtrl on the CodeGuru message boards from Filbert Fox. This worked great, so my next task was to create my own scrollbars. I chose to derive a class from CStatic and create the scrollbar from scratch using bitmaps. It took a while and a lot of tweaking, but I got the custom scrollbar created and working including the wheel mouse, arrow keys, and pageup/pagedown keys.

        K Offline
        K Offline
        KellyR
        wrote on last edited by
        #3

        Ugh, I can't believe there's no way to custom draw the internal scrollbars of a control... it may not have an HWND associated with it, but you can click it and use it just like any other scrollbar so it must send some sort of scrollbar messages, and it's drawn somewhere, somehow, so there has to be a way to custom draw it... Thanks for the link though, more and more it keeps looking like I will have to put in my own custom scrollbars but I wish I could just take advantage of the internal ones.

        KR

        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