Check out these functions[^]. It's a while since I have done this but I'm afraid it is somewhat involved in terms of getting mutliple sets of information and matching the pieces together. Hey, if it wasn't Microsoft it wouldn't be fun.
One of these days I'm going to think of a really clever signature.
I have a CDateTimeCtrl on my dialog. Through this I can choose any date in given range from drop down. But currently user is also allowed to press numeric keys to set the date. Is there any way to stop user from typing in it. I want, he should only be able to select the date from drop-down and I don't want to disable the control.
I have checked the "AllowEdit" property but that is different thing. Currently it is set to false.
Thanks Jochen, you are right. That way it will work. But for such a small requirement, I don't want to do big changes and also I don't want to go for pretranslate message. Is there any way to handle WM_CHAR/OnChar events for the date control on the same dialog class?
You are using MFC, so you don't need to handle PreTranslateMessage(). Just use the wizard to derive a class, use the message properties to add the WM_CHAR handler, and comment the line calling CDateTimeCtrl::OnChar(). Done with a few mouse clicks. All you need to type in using the keyboard is the name of the drived class, the comment chars, and replacing the CDateTimeCtrl by your class name in your code.
The edit control of CDateTimeCtrl is not accessible. So it can't be done in the dialog. Even when it would be possible: It is always better to perform such things in the control rather than in the dialog. So it must be done only once and not within every dialog that uses such a control.
After this statement,m_pImage = new Image(szFile, FALSE)
the m_pImage is NULL, I do not know why create Image failed, after debug that I find that the szFile is a right PNG image file path.
The last code used in a CDialog form, I use the CDialog::DoModel() to show this dialog in the
I do not know whether I use this class Image too early, or I need use some code to initialize the GDI+ library?
I have a console application, that create a dialog box to show a progress bar. This has worked fine for years (it started as a Visual Studio 6 project, then I migrated it to Studio 2005) Now, I have migrated it to Studio 2010. It still works fine under Windows 7, but under XP, the dialog box returns -1, with a GetLastError() of 0. When I look at the messages sent to the dialog box, then I see WM_SETFONT, followed by WM_DESTROY and WM_NCDESTROY. I call it as
DialogBox (hInstance, MAKEINTRESOURCE (IDD_MAPPER), HWND_DESKTOP, DialogProc), where DialogProc is defined as
Also, please check if you still using the manifest loaded via RT_MANIFEST resource. You need to delete this from resource and use the project settings. VS2010 has a habit of assigning RT_MANIFEST to 2, making the program unusable under XP.
And of cause you need to check this linker option: MinimumRequiredVersion. It should be 5.00.
There is no RT_MANIFEST mentioned in the resource Also, the MinimumRequiredVersion is left blank, so I don't expect any difficulties there!
In any case: the program itself runs and it does everything up untill the point that I start the dialog box. (and everything after that dialogbox crashes) There are a number of log statements before and after and I see everyone of them. Only everything that occurs from within the dialogbox doe not appear in XP.
I did code to draw curves using PolyBezier function. now I want to allow user to draw it using the mouse but I do not know how I can do it how I specify the control points for the curve while user draw the curves using mouse??
can you help me in doing this did lots of search without any result
It depends on what you want. You could, for instance, let the user draw the curve, extrapolate control points from the drawn curve (aka x,y positions that the mouse went through), and then use them to calculate a smooth curve. Or you could have the user draw a line, then click a point on that line to create a control point and allow them to move that point. I've seen both.
I have created a COM dll . I'm calling another dll(C#.net dll\assembly)by adding refrence of this .net dll(from project properties) .And i able to access properly.
Now i want to make this .net dll usage should be independent of path. I mean -
I'll not add any reference or give path name in my COM dll Hence my COM dll don't know where this .net dll is located in the system. While COM Dll try to call this .net dll it'll search in whole system & load it.
Kindly please advice the C++ code for this
OR LoadLibrary() is only the method through that only we can load library dynamically(independent of path)
We don't want to give specific location of dependent Dll in COM code . Because this dependent DLL is not developed by us. This dll usually obtained after installation of a software.
we legally tied-off with this software company & code cann't be provided them(as usual company policy)
Hence if it is possible then we want to load dynamically.
I'm guessing if we do search the dependent dll in whole system while invoking ,there may be the performance issue may happen. But still the requirement is like this.
Hope you understood our requirement.
Hence if any best ways kindly please suggest.
Normal installations will create a registry entry which you can look for. You find the entry and grab the install directory. Then...
During your install.
1. Present a dialog to the user with the default product path (or the found one above.)
2. The user can modify the path.
3. When the user says ok you then verify that the correct dll is at the path specified.
4. If the dll (and correct version) is not found then put out an error message and go back to step 1.
I've been using the auto keyword, lambdas and move constructors so far and all seems very cool. If the only thing they added was the auto keyword it would still be worth upgrading. This is just awesome...
auto it = someCollection.begin();
...but of course the downside is we now need cbegin() as well
This might help in lot of cases, but I really wonder if C++ 11 can reduce the pain of memory mangement. In my experience, auto variables are hardly I needed for my development. but really got tired of several gotchas and memory corruption and management with C++
Don't get me started. Today's object spaghetti makes the old C spaghetti pale in comparison.
C++11 advocate: Look, I made the code more awesome.
Me: It's slower, more complicated than it needs to be and much harder to find bugs. Why not just use C#?
C++11 advocate: But, it's more awesome!
(I actually heard someone today advocate that all pointers must be wrapped in shared_ptr, no matter what. I'm even working on some code that did that for absolutely no apparent reason--the delete happens within three lines and there is a catch around the call to which the pointer is passed AND the pointer is not actually shared. Yet, they not only used a shared_ptr, but spent time creating a factory to instantiate the only instantiation ever of the object to which the pointer is passed.)
Just easier. At first I was quite sceptical, anything that looks like it might break c++'s type safety is bound to raise suspicion but after reading and playing with it a bit it's actually harder to shoot yourself in the foot than I'd first thought.
The rvalue references are a much bigger change but we've seen some good performance benifits from that.
I am new to C++ but am quite handy with C# and my problem is this. I have a dll (COM) - call it s.dll that wont work properly with VB ( it crashes on events etc) but im informed the dll works fine in a C++ enviroment.
My idea is to write a COM dll in C++ that propogates the methods etc of s.dll and then use this new COM dll in my VB code. I have seen how to write a COM dll and the ATL wizzards using VS6 but I dont know how to add s.dll to my new dll that im writing in VS6.
Can anyone point me to an example of how to add s.dll to COM dll in Vis Studio 6 that uses the ATL?
that wont work properly with VB ( it crashes on events etc) but im informed the dll works fine in a C++ enviroment.
This does not guarantee that there is something inherently wrong with the DLL that can be fixed by putting it inside another DLL. The first thing you should do is try and find out why it is crashing, rather than trying to fix a problem which may not exist.
One of these days I'm going to think of a really clever signature.
I have been back to the body that wrote the DLL and they arent interested and I have no idea and no time or inclination to find out why it wont work properly. I am looking for an answer to the question I posed as this is meant to be the idea of this forum is it not?