Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8335751
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 9, 20262026-06-09T03:45:57+00:00 2026-06-09T03:45:57+00:00

When you’re using WTL, you can freely copy controls that represent built-in objects: //

  • 0

When you’re using WTL, you can freely copy controls that represent built-in objects:

// Notice that CWindow is passed by _copy_, because it only wraps the HWND
int OnNotifyFormat(CWindow wndFrom, int nCommand) { ... }

Now, if I want to make my own controls, it’s easy enough to say:

template <class T, class TBase = CWindow, class TWinTraits = CControlWinTraits>
struct CMyControlImpl: public CWindowImpl<T, TBase, TWinTraits>
{
    std::vector<int> internal_info;

    BEGIN_MSG_MAP_EX(...)
        ...
    END_MSG_MAP()
};

struct CMyControl : public CMyControlImpl<CMyControl>
{
    DECLARE_WND_CLASS_EX(TEXT("MyControl"), 0, COLOR_WINDOW)
};

but now the problem is that I can’t simply say:

void OnFooHappened(CMyControl control)
{
}

because CMyControl is more than just a handle — it contains the data itself!

What is the correct way to make a control class that is consistent with the built-in ATL/WTL classes, with respect to this copy behavior?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-09T03:45:58+00:00Added an answer on June 9, 2026 at 3:45 am

    You have a few custom controls right there in WTL, in \Include\atlctrlx.h:

    ///////////////////////////////////////////////////////////////////////////////
    // Classes in this file:
    //
    // CBitmapButtonImpl<T, TBase, TWinTraits>
    // CBitmapButton
    // CCheckListViewCtrlImpl<T, TBase, TWinTraits>
    // CCheckListViewCtrl
    // CHyperLinkImpl<T, TBase, TWinTraits>
    // CHyperLink
    

    Apart from this, you will find custom WTL controls made right way at http://viksoe.dk.

    The “copiability” of the controls is based on the fact that standard controls are available to you via handle HWND, and you can easily copy, attach, detach etc. this handle, and while it is valid the whole control is good. Wrapper classes are thin and only have the HWND member variable in them.

    Custom controls on the other hand as you noticed have additional information, and you cannot copy them as easily. You can still have this additional information allocated/released dynamically with the control, you will implement the additional control specific window messages and notifications, and then you can create a thin wrapper class that converts methods into messages, sends them to the real control, which in turn will handle them, esp. by converting messages with parameters back to real methods. This let you copy thin wrapper class, but the control itself is way more complicated and cumbersome (you don’t normally need to have it that way).

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I'm new to using the Perl treebuilder module for HTML parsing and can't figure
That's pretty much it. I'm using Nokogiri to scrape a web page what has
I'm parsing an RSS feed that has an &#8217; in it. SimpleXML turns this
link Im having trouble converting the html entites into html characters, (&# 8217;) i
I have a jquery bug and I've been looking for hours now, I can't
I am reading a book about Javascript and jQuery and using one of the
I have a string like this: La Torre Eiffel paragonata all&#8217;Everest What PHP function
I've got a string that has curly quotes in it. I'd like to replace
I'm using v2.0 of ClassTextile.php, with the following call: $testimonial_text = $textile->TextileRestricted($_POST['testimonial']); ... and
I am doing a simple coin flipping experiment for class that involves flipping a

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.