|
I don't see how making the container itself const would be useful. If you can't modify the vector, how can you add objects to it?
BTW check out boost::assign[^] for some neat classes that make STL container initialization nicer.
--Mike--
Visual C++ MVP
LINKS~! Ericahist | 1ClickPicGrabber | CP SearchBar v2.0.2 | C++ Forum FAQ
Strange things are afoot at the U+004B U+20DD
|
|
|
|
|
Michael Dunn wrote:
I don't see how making the container itself const would be useful.
Because, like in my first static const struct example, I only want the container for lookups - I won't add anything to it once it has been initialized. Looks like I might have to check Boost out...
|
|
|
|
|
Looks like the Boost 'list_of' function is exactly what I need!
e.g.:
static const vector<int> v = list_of(1)(2)(3)
|
|
|
|
|
Is there any way to use a function object with find_if instead of a predicate? Predicates have limited use, and it would be neat if I could do something like this:
struct findfunc
{
CMyPtr* m_pData;
findfunc(CMyPtr* p) : m_pData(p) { }
bool operator()(CMyData* ptr)
{
return (ptr->blah == m_pData->blah);
}
}
...
std::list<CMyData*> mylist;
...
CMyPtr somedata;
...
std::list<CMyData*>::iterator it = std::find_if(mylist.begin(), mylist.end(), findfunc(somedata));
Basically, I want to perform a more advanced search (on any STL container) than find_if currently allows. I am quite new to STL, so please bear with me!
The Rob Blog
|
|
|
|
|
|
You're right - it does work - I was having a blonde moment!
The STL rocks. I feel I have hardly scratched the surface yet already I am in awe of its capabilities...
|
|
|
|
|
Don't forget to make operator() of your functors a const method. Otherwise it may not work, if your STL implementation passes the functor objects by const reference.
Good music: In my rosary[^]
|
|
|
|
|
Top tip - cheers. It does actually mention this in the excellent C++ Standard Library book I have (Nicolai Josuttis) so there's no excuse...
|
|
|
|
|
Greetings...
I have been working on some ATL controls which have MFC support. I can view the property page of the ATL classes and see the events they can handle, which are a partial list of those available to pure MFC classes. However I need to handle the event WM_SETTINGCHANGE and that is not listed as a possible event. I can manually type it under:
<br />
BEGIN_MSG_MAP(CSomeClass)<br />
...<br />
MESSAGE_HANDLER(WM_SETTINGCHANGE, OnSettingChange)<br />
...<br />
END_MSG_MAP()<br />
but this doesn't work..the debugger never stops in the OnSettingChange function.
However, if I make a new purely MFC project, WM_SETTINGCHANGE is listed under the events tap of the classe's property page, and it all works just fine.
The question I guess is, how can it be that ATL "with MFC support" has only some of the events? also what is the work arround, especially as in pure MFC the event handling function is in the form of
<br />
OnSettingChange(UINT uFlags, LPCTSTR lpszSection)<br />
and in ATL control project with MFC support it is in the form of:
<br />
OnSettingChange(UINT , WPARAM , LPARAM , BOOL& )<br />
Thanks,
Aristotel
|
|
|
|
|
Hi,
In my main frame I have a splitter pane with two views. I want to scroll the appropriate window when the mouse hovers over it. What is the best way to do this?
I was thinking of handling the WM_MOUSEWHEEL message and checking if the cursor is within the bounds of the view's rectangle (using GetCursorPos() and GetWindowRect()) but I think it would waste too many CPU cycles
Is there a better way?
Thanks in advance.
|
|
|
|
|
First, this is not the appropriate forum: you'll get more response in the Visual C++ forum as it is purely related to visual C++ and MFC.
For your question, do you know that if you make your views inherits from CScrollView instead of CView, this is automatically managed ? You'll have also scroll bars at the bottom and at the right of your views.
Hope this helps
|
|
|
|
|
cedric moonen wrote:
as it is purely related to visual C++ and MFC
How do you figure? He never mentions MFC, so I think we should assume that he's using WTL.
--
An eye for an eye will only make the world blind.
|
|
|
|
|
Sorry, I don't know WTL and the words mainframe and splitter made me believe he was using the MFC.
Next time, I'll ask before saying something wrong
|
|
|
|
|
The MSDN docs says:
The WM_MOUSEWHEEL message is sent to the focus window when the mouse wheel is rotated. The DefWindowProc function propagates the message to the window's parent. There should be no internal forwarding of the message, since DefWindowProc propagates it up the parent chain until it finds a window that processes it.
After having read that, my first stab at the problem would be to process the WM_MOUSEWHEEL message at the splitter level. There I'd use WindowFromPoint() and GetCursorPos() to figure out which window it's over. Then I'd use GetParent() until I get either left or right pane window. Then I'd send the appropriate WM_xSCROLL messages to the correct pane.
--
An eye for an eye will only make the world blind.
|
|
|
|
|
Hi, All!
When i trying to add a new ATL object to my project i see this error! May be smbd solve it?
Thanx!
|
|
|
|
|
AdyOS wrote:
When i trying to add a new ATL object to my project i see this error
which error ?
AdyOS wrote:
May be smbd solve it?
certainly not, how could we ? we don't have neither the code nor any explanation of what you do nor the error message...
please understand us too if you want us to give some help...
TOXCCT >>> GEII power [toxcct][VisualCalc]
|
|
|
|
|
OK! I have an ATL project with support MFC. The project already have some ATL objects (there are Dilaogs). And now i try to add a new Dialog to my project, but when i click Insert->New ATL object i see this error. Before all was ok.
|
|
|
|
|
|
toxcct wrote:
which error ?
The one contained in the title of the message
|
|
|
|
|
I'm receiving an unknown software exception when trying to use COM (ATL) to interoperate with the .NET CLR. I AM using VS2005 Beta 2 but I think the problem occurs in VS2003 also (from what I've seen when googling).
To reproduce this behaviour, create a simple ATL object (I used non-attributed, dunno if it matters), add a single method with no params that just returns S_OK. Compile with the /clr switch. (Note there's no need to go to the trouble of creating or instantiate any managed objects - compiling with the /clr switch is enough).
Now write a console app that creates this object, calls the method and exits. Upon exit, Kaboom!. As there is virtually zero code, it's quite tricky to fix. Has anyone seen this and, more importantly, fixed or worked around it?
Many thanks
swg
|
|
|
|
|
Hi, I have the same problem,
please help me...
|
|
|
|
|
Hi Friends,
I am using some open source code which is in C++ language.
But i have to convert it to C code.
In the C++ source, there are many class templates.
I want to convert to the templates to C code.
I don't know how to do it.
Please guide me.
With Thanks and Regards,
Arun AC
|
|
|
|
|
Arun Chakaravarthy wrote:
I am using some open source code which is in C++ language.
But i have to convert it to C code.
In the C++ source, there are many class templates.
I want to convert to the templates to C code.
I don't know how to do it.
Convert the templates to macros (templates and macros are very similar in C++).
|
|
|
|
|
CP Visitor wrote:
Convert the templates to macros (templates and macros are very similar in C++).
That may not always be possible. Especially if the existing code is using type expressions.
Good music: In my rosary[^]
|
|
|
|
|
it won't be possible directly, since templates are pure C++.
but you could write the specialized classes with the types you'll have to use in...
let's take an easy example...
in C++, we have a class called map<Key, Value>
well, if you use it only for (key, Value) of types (char, int), you can rewrite the part of the map<char, int> which will work only on those types... (i conceed, it's a lot of work)
TOXCCT >>> GEII power [toxcct][VisualCalc]
|
|
|
|