|
I'd have a good look at CPallini's suggestion - you are doing very strange things there.
But that would only crash when you leave the browse function, not while in it. I'd put a breakpoint in your RecipeBrowseCallbackProc, and check each line - especially the BFFM_SELCHANGED case, as you know it crashes in there...
Good luck,
Iain.
In the process of moving to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), give me a job! http://cv.imcsoft.co.uk/[ ^]
|
|
|
|
|
As has already been suggested, start with the basics and build upon them (e.g., remove the callback function, change ulFlags ). Don't try and debug a problem with so many "unknowns."
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
Try This.
LPMALLOC pMalloc;
LPITEMIDLIST pidl;
TCHAR szPath [MAX_PATH];
BROWSEINFO bi = { GetSafeHwnd(), NULL, szPath,NULL,
BIF_VALIDATE|BIF_UAHINT|BIF_USENEWUI|BIF_RETURNONLYFSDIRS, NULL, NULL };
pidl = SHBrowseForFolder ( &bi );
if ( NULL != pidl )
{
if ( SHGetPathFromIDList ( pidl, szPath ) )
{
}
SHGetMalloc ( &pMalloc );
pMalloc->Free(pidl);
pMalloc->Release();
}
To accomplish great things, we must not only act, but also dream;
not only plan, but also believe.
|
|
|
|
|
Please use 'code block ' button for code snippets.
At first look your function call doesn't match well with function prototype.
VKupunaram wrote: BOOL bRet = ::SHGetPathFromIDList(pIIL, (char*)&szSelectedDir)
This line looks very suspiscious: how is szSelectedDir defined?
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]
|
|
|
|
|
Hello,
I have a created a map named mapList
std::map<string, std::vector<FileInfo*>> mapList;
and loading to key and value.
when i try to create a view of the file in the process address space (MapViewOfFile) which returns a pointer to the file view.
error C2440: '=' : cannot convert from 'std::map<_Kty,_Ty> *' to 'LPCTSTR' msg is thrown
I think there is an error in typecasting from 'std::map<_Kty,_Ty> *' to 'LPCTSTR' as i'm implementing in below manner.
pBuf = (std::map<string, FileInfo*> *)MapViewOfFile(hMapSharedMemory, FILE_MAP_ALL_ACCESS, 0, 0, 0);
Can anyone suggest me a solution.
Thanks in advance,
Regards,
Mayur M
modified on Tuesday, May 5, 2009 4:53 AM
|
|
|
|
|
Something went wrong in your code formatting, please try again.
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]
|
|
|
|
|
Wow, your code seems to be wrong on so many points
First thing, why are you trying to assign a pointer to a map into a LPCTSTR pointer (I guess that pBuf is LPCTSTR by lookking at your error). That doesn't make any sense to me.
Second, you can't put a full map this way in the shared memory. You will need to serialize in some way your array: write the number of elements and then write all the elements one by one in the shared memory. You will need to apply the same principle when you deserialize: read the number of elements, then the elements one by one and add them to a local map object.
|
|
|
|
|
Cedric Moonen wrote: Wow, your code seems to be wrong on so many points
My immediate reaction as well
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
There are so many things wrong with attempting what you are that it's difficult to know where to start...
However, the main point is that std::map , std::string and std::vector all rely on pointers to external data. You do not have control over those pointers, so you cannot guarantee that they will lie within the mapped area of memory (unless you use specialised allocators, as documented here[^]).
mmayur wrote: Can anyone suggest me a solution.
Your immediate problem here is a symptom of a bigger one. Tell us more about what you're trying to do and maybe we can suggest a solution to the bigger problem.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Thanks for the reply.
sry for not providing proper information.
I'm facing a new problem of coping the contents from map to a map pointer.
pBuf = (std::map<string, FileInfo*> *)MapViewOfFile(hMapSharedMemory, FILE_MAP_ALL_ACCESS, 0, 0, 0);
std::map<string, FileInfo*> mapList;
I have to insert the mapList to pBuf.
Does insert or get_allocator resolve my problem.
Regards,
Mayur M
|
|
|
|
|
Thanks for the reply.
sry for not providing proper information.
I'm facing a new problem of coping the contents from map to a map pointer.
pBuf = (std::map<string, FileInfo*> *)MapViewOfFile(hMapSharedMemory, FILE_MAP_ALL_ACCESS, 0, 0, 0);
std::map<string, FileInfo*> mapList;
I have to insert the mapList to pBuf.
Does insert or get_allocator resolve my problem.
Regards,
Mayur M
|
|
|
|
|
As I said before...that's just not going to work. What problem are you trying to solve with this?
If you want to share/communicate a map between two or more processes using shared memory, look at Boost.Interprocess[^] - that has containers designed to be used in a shared memory area.
If you're just sending the map from one process to another, I'd serialize it - Boost.Serialization[^] is an option there.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
But right now i'm just looking for copying the contents of a map to map pointer. Nothing more than that
|
|
|
|
|
Are you seeing some relationship between the 'Map' in 'MapViewOfFile' and the 'map' in 'std::map'? Because if you are and that's why you're using std::map...well, there is no relationship between those two 'map's at all.
But that's the trouble - without telling us what you're trying to accomplish, we can't help you.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Hi,
Sorry for the improper title, which has created a lot of confusions.
I have a map of type
Std::map<string, FileInfo*> ActualMap;
Std::map<string, FileInfo*>::iterator mapIterator
Typedef std::pair <string, FileInfo*>;
The FileInfo is a class which contains the properties of the files.
I am inserting all the values properly into the ActualMap and then it has to be shared with another process in the same machine using the Named SharedMemory. So, I have implemented in following way
Std::map<string, fileinfo*=""> *pBuffer;
pBuffer = (std::map<string, fileinfo*=""> *)MapViewOfFile(hMapSharedMemory, FILE_MAP_ALL_ACCESS, 0, 0, 0);
once the above mapping of the view is done, I have inserted all the key-value from the ActualMap as
CopyMemory((PVOID) pBuf, &mapList, (mapList.size() * sizeof(std::map<string,FileInfo>)));
Now, in the client application i'm able to retireve only the size of the map but not the key-value pairs and their data.
So, please help in solving this problem.
Regards,
Mayur M
|
|
|
|
|
|
Is anybody know how to change default button (that will be activated by Enter) in PropertySheet/PropertyPage to some button on active page (not any of standart PropertySheet buttons - OK, Cancel or Apply)?
|
|
|
|
|
Hi,
Can someone tell me how to convert BOOL in to System::String* __gc
I'm really wired with this...
Thanks a lot.
I appreciate your help all the time...
CodingLover
|
|
|
|
|
Please ask it in the C++/CLI forum. This is the original C++ forum.
It is a crappy thing, but it's life -^ Carlo Pallini
|
|
|
|
|
CodingLover wrote: Can someone tell me how to convert BOOL in to System::String* __gc
I'm not sure I would ever ask such question, anyway, if I should, then I would ask it in the managed C++/CLI forum [^].
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]
|
|
|
|
|
I'll join in the chorus of "wrong forum!".
But before you ask the question there, think about it yourself.
You have two things:
1/ A BOOL. This is a thing which has two states, true or false. 1 or 0. Orange or green. I use BOOL to represent whether something is on or off. So, it could also mean "Give Iain Money" / "Give Iain Kisses".
2/ System::String * is some weird thing from another language. But it sounds a lot like a string. (I know, I'm a genius with psychic powers). So, it would be some sort of text representation.
So, you need to understand what that BOOL represents before you can turn it into text.
Start this conversation:
CodingLover's Mum: "Darling, what does this mean when it's on?"
CodingLover: "Ah, it means __________________________"
CodingLover's Mum: "Darling, what does this mean when it's off?"
CodingLover: "Ah, it means __________________________"
But you're not done... Try this conversation also:
CodingLover's Swedish Girlfriend: "Älskling, vad innebär det när den är på gång?"
CodingLover: "Ah, it means __________________________"
CodingLover's Swedish Girlfriend: "Älskling, vad innebär det när den är avstängd?"
CodingLover: "Ah, it means __________________________"
Text is a pain - for some reason, people all over the world like to use their own language, instead of God's Good English!
Iain.
ps, Power of google, my Svensk is far from good enough yet...
In the process of moving to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), give me a job! http://cv.imcsoft.co.uk/[ ^]
|
|
|
|
|
Thanks for the comment. I'm not an experienced person in C/C++, and that's why I ask a question here, after different things workout.
Anyway, I'll try my best next time what you are saying in the above post.
I appreciate your help all the time...
CodingLover
|
|
|
|
|
Well, the answer to your question isn't really a "how do I write this code" answer, it's a "what does this mean / how do I represent it to the user" question, and that will be the same whether you write in VB, FORTRAN, C, ruby, etc.
In my miniscule experience, the hard questions are not coding ones, they are deciding what to code...
Good luck,
Iain
In the process of moving to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), give me a job! http://cv.imcsoft.co.uk/[ ^]
|
|
|
|
|
|
If you want to get a string value representing the BOOL, then this function ought to do you:
System::String^ GetStringFromBOOL(BOOL b)
{
return Boolean(b!=FALSE).ToString();
}
This uses C++/CLR rather than Managed C++, which is why I have System::String^ rather than System::String* (^ is a managed pointer in C++/CLR).
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|