Hi Igor,
Thank you very much.
The thing that I don't understand is that how folks such as those from
SmartWin++ are able to seemlessly connect functions with Windows messages
without using a case statement in a message loop. An example is at the
following page:
http://smartwin.sourceforge.net/getting_started.php
Using your approach, I need to use a case statement inside a message loop.
That's what I don't want to do. I am familiar with CRTP that SmartWin++
folks seem to have used as deriving new classes is very easy and the
resulting code is very clean. So, I can at least imagine the design behind
this library. But I wonder if they have written such case statements in
message loops under the hood for every single GUI element. Someone on Boost
Users mailing list did provide a solution to this a few months back (I do
recall but cannot seem to find that post - I starred it in my thunderbird
inbox but I have lost my inbox backup - I can scan the whole boost users
list but I have limited time available to accomplish what I want).
Best regards, Asif
On Thu, Mar 24, 2011 at 4:02 PM, Igor R
Yes, exactly. Windows messages (I want to avoid having to write long case statements in message loops) - that's what I mean. I'd be thankful if anyone could point me to the right direction.
// pseudo-code!
// Lets say it's a botton; switch(message) { case WM_LBUTTONDBLCLK: onDoubleClick(message); break; //... };
// member function void onDoubleClick(Message message) { doSomething(message); onDoubleClick_(arg1, arg2); }
// member boost::signals2::signal
onDoubleClick_; Now multiple listeners of your button can connect the signal:
struct Handler { void onDoubleClick(Arg1 a1, Arg2 a2); }; button->onDoubleClick.connect(boost::bind(&Handler::onDoubleClick, handler, _1, _2));
This's only a sketch, in real code hou have to care about proper encapsulation, appropriate arguments etc. _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users