|
Hi,
I have a newbie question I hope somebody can help me with.
I am writing a custom stl container, basically a specialized kind of tree. The container needs to implement a variety of iterator options (preorder traversal, postorder traversal, breadth-first traversal, depth-first traversal, etc). The easiest way to do this appears to be to write a number of distinct iterators that traverse the tree in different ways.
I see from the standard stl containers that they always typedef "iterator" and "const_iterator" (plus reverse versions). Since I will have more than one kind of iterator, I am not sure how my container can be made stl compliant.
So my question is, is it a strict requirement of an stl container that it exposes these standard iterator typdefs? If I typedef "iterator1", "iterator2", etc., will the stl algorithms still work without any unforeseen problems, or are there specific requirements for the presence of "iterator" and "const_iterator"?
I hope this makes sense, please let me know if further clarification is needed.
Thanks for any advice and help! I really appreciate it.
Mellib
|
|
|
|
|
What's your preferred choice of tool for automating your C++/MFC projects? Nant/Vcbuild etc?
We currently dont do automated daily builds: something we're intending to start.
Looking for ideas and suggestions.
thanks!
|
|
|
|
|
CruiseControl.NET (cc.net) is nice (and cheap)
|
|
|
|
|
Before I say anything, I've done a lot of searches, and haven't had any luck yet. Also, I'm a beginner, so most like I'm not using the correct terms to describe what I want, so please excuse me. Thank you in Advance
Lets say you have two monitors. You are using firefox and you want to just drag the firefox screen to the second monitor. Now instead of two monitors, you have two users remotely logged in to the same computer. User A wants to give you user B program 1 in its exact state. How do you do this?
This is what I am doing now:
Person A remotely log in as user A, and starts program 1. Person A ran into a problem with program 1 and requests help from person B. Person A logs off, so person B can remotely log on to user A, where person B can debug program 1 in the exact state where person A had it.
This is what I want to do:
Person A logs in as user A, and starts program 1. Person A ran into a problem with program 1 and requests help from person B. Person A sends the UI Window to person B who is remotely logged on as user B on the same computer.
I don't know if this is even possible or if it makes sense.
|
|
|
|
|
Have you considered using VNC? I havent tried this exact scenario on the same PC but it might work. PersonA can tell PersonB he has a problem, and PersonB connects to PersonA's console?
|
|
|
|
|
No that is not exactly what I want. Person A still has to log off for person B to log on. I guess what I'm doing is not possible, but then again no one on this forum told me its impossible either. The answer I wanted most right now is, either its possible, or not.
|
|
|
|
|
Hello friends,
I want to develope a software which can run for standard users.
My software will be installed for only for current user.
My superior wants me to keep read only files(Exe ,Dlls...) in Program files path.
Other data files in Appdata path,Since those files required Read & write access.
Ex:
Lets consider two user accounts in a PC.
1) administrator
2) joe ( standard user)
Now the user logged in as a joe and trying to install the software.
So my setup file asks for elevation becoz it has to put files in program files path.
Once the installer has got elevated ,after that if i am getting Environment variable "AppData" to put the data files.
It gives me "C:\users\administrator\Appdata\Roaming\" path, but actually i have to put the files for user joe.
I dont know how to get the currently logged in users Profile directory.
Note:
After the elevation . if I am getting the HKCU profile that also gives me the administrator profile only.
Try outs:
I was loggin as a Joe ( standard user)and launching the setup file.Setup file asks for elevation.
From My setup file(runs in administrator account after elevation), I tried to find "expolrer.exe" (runs in Joe account) and getting it is ProcessToken and CreateEnvironmentBlock fn to create environment block for the Explorer.exe.
In Vista it is succeeding but in XP OpenProcess fails if i am elevating the exe and trying to get info from the Explorer.exe which runs in Joe's account.
HANDLE hProcessHandle = OpenProcess(PROCESS_QUERY_INFORMATION,FALSE,dwExploererProcessId);
if( hProcessHandle == NULL)
return -2;
int nRetVal = OpenProcessToken(hProcessHandle,TOKEN_QUERY,&hToken);
if(nRetVal == 0 )
return -3;
BOOL bval = CreateEnvironmentBlock(&lpData,hToken,FALSE);
if(bval == FALSE)
return -4;
Advice me about the correct way to get the Currently logged in users profile directory.
Eagerly waiting for your answers.
Thanks ,
WindowsPistha
|
|
|
|
|
WindowsPistha wrote: Advice me about the correct way to get the Currently logged in users profile directory.
Maybe use SHGetFolderPath(), or on Vista+ only, SHGetKnownFolderPath().
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Both i tried SHGetFolderPath(), or on Vista+ only, SHGetKnownFolderPath().
Both gives administrator profile directory only, if elevated.
modified on Thursday, October 30, 2008 2:42 PM
|
|
|
|
|
WindowsPistha wrote: Both gives administrator profile directory only, if elevated.
What did you use as the fourth argument (i.e., dwFlags ) to SHGetFolderPath() ?
"Love people and use things, not love things and use people." - Unknown
"The brick walls are there for a reason...to stop the people who don't want it badly enough." - Randy Pausch
|
|
|
|
|
I used SHGFP_TYPE_CURRENT flag that also gives me the elvated users app data path.
modified on Friday, October 31, 2008 6:36 AM
|
|
|
|
|
Have you tried SHGFP_TYPE_DEFAULT to see if it yields anything different?
"Love people and use things, not love things and use people." - Unknown
"The brick walls are there for a reason...to stop the people who don't want it badly enough." - Randy Pausch
|
|
|
|
|
|
Thanks !
I have red the link.
SHGetKnownFolderPath also gives me the admin users appdata path.
Not the currently windows logged in users appdata path.
|
|
|
|
|
Hi, my problem is I want to add an array containing some null bytes at the beginning of it, to a std::string like this:
std::string MyString = "\x00\x00\x01\x02";// "It won't copy anything into MyString but...
std::string MyString2 = "\x01\x00\x03"; // Will copy the array includiing the null byte and whats after it.
What should I do? Thanks
|
|
|
|
|
I think Ill reply to myself:
There is a constructor for what I want and it is:
string ( const char * s, size_t n );
Anyway, do you think it can give me some kind of problem using std::strings for byte array handling? Thanks
|
|
|
|
|
santiageitorx wrote: do you think it can give me some kind of problem using std::strings for byte array handling?
The class is named string , what do you think?
You might want to pick up a copy of Kent Becks book, Implementation Patterns.
led mike
|
|
|
|
|
led mike wrote: The class is named string, what do you think?
This [^], maybe.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
santiageitorx wrote: std::string MyString = "\x00\x00\x01\x02";// "It won't copy anything into MyString but...
What if you used wstring instead?
"Love people and use things, not love things and use people." - Unknown
"The brick walls are there for a reason...to stop the people who don't want it badly enough." - Randy Pausch
|
|
|
|
|
I am making a program in MFC.The main frame take the charge of moniting,if the specified event occured,a short message will be sent.At the same time,I will moniting if there is a new short message had come,if it had,I will do someting with the message.So in the situation above,what should I prefer?The timer or the thread? I am a newer in MFC.Thanks!
|
|
|
|
|
Your description is a bit involved. Could you please elaborate and clarify?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
For example the program is used for sending a mobile short message when a button is clicked,at the same time, the backstage is used for checking if there is a new short message had come every three minutes.I mean how I deal with the backstage.Set a timer or make a thread?
|
|
|
|
|
lingerpop wrote: the backstage is used for checking if there is a new short message had come every three minutes.
Since the background operation have to be done in every 3 minutes, timer is inevitable. Your real concern is - which one to use? "Simple mfc message timer" or "thread + timer" ? Well, my suggestion is, if your background operation is time consuming, go for Thread+Timer , or else simple WM_TIMER message will do, since it won't block the GUI.
Regards,
Jijo.
_____________________________________________________
http://weseetips.com[ ^] Visual C++ tips and tricks. Updated daily.
|
|
|
|
|
Does anyone know of a wrapper to CProgressCtrl that accepts __int64 values?
|
|
|
|
|
Seeing how the progress control can only show progress one pixel at a time, and the win32 progress bar control already has a range of 0 to 65535 (a short) which is way more than could ever possibly be shown on a display screen, creating a wrapper to accept __int64 values would be fairly simple. Just a little bit of division to get the number into the proper range.
You may be right
I may be crazy
-- Billy Joel --
Within you lies the power for good - Use it!
|
|
|
|