|
llp00na wrote: Question One
Create a Modeless dialog instead of a Modal dialog.
Maximilien Lincourt
Your Head A Splode - Strong Bad
|
|
|
|
|
i need a modal dialog. i dont want the user to use the main application while entering data
llp00na
|
|
|
|
|
How Can I Read CakeWalk's wrk File?
I need read data from wrk,but I don't know the wrk file's format.
Someone Could Tell me how to read wrk file and its format(structure)?
|
|
|
|
|
|
How Can I Read Midi File?
I need read score data from Midi File,but I don't know the Midi file's format.
Someone Could Tell me how to read Midi file and its format(structure)?
|
|
|
|
|
|
|
Did someone have source code to extract midi file?
|
|
|
|
|
|
|
PCHAR a ;<br />
a = NULL ;<br />
<br />
PCHAR b = new char[10]<br />
a = b ;<br />
<br />
delete [] b ;<br />
delete [] a ;
If I have the above code then what happens? What will a = b do? Will delete [] b remove the value in memory for a too?
Thanks...
---
With best regards,
A Manchester United Fan
The Genius of a true fool is that he can mess up a foolproof plan!
|
|
|
|
|
LazyKancha wrote: delete [] b ;
it deletes the char array
but the second statement is invalid, because it's already deleted.
and Yes, a = b; will assing the char array 'b' to variable 'a'.
|
|
|
|
|
This will result in a crash. The instruction a=b will simply change the address to which a points. So, a will point exactly at the same address than b.
So doing:
delete [] b ;
delete [] a ;
is the same as doing:
delete [] b ;
delete [] b ;
Which tries to free memory that has already been freed.
|
|
|
|
|
a = b assigns only the address pointed to by b into a .
so, both a and b point the same memory address after the = instruction.
if you delete[] b , then delete[] a should fail as the memory is already delete d
|
|
|
|
|
What about a memcpy instead of a = b?
Thanks for your answers...
---
With best regards,
A Manchester United Fan
The Genius of a true fool is that he can mess up a foolproof plan!
|
|
|
|
|
If the pointer a has been dynamically allocated then it is ok. But in your case, you should first allocate the memory with new and then memcpy the data. Otherwise you will have a crash in memcpy.
|
|
|
|
|
LazyKancha wrote: If I have the above code then what happens?
You will get a compiler error.
"Let us be thankful for the fools. But for them the rest of us could not succeed." - Mark Twain
"There is no death, only a change of worlds." - Native American Proverb
|
|
|
|
|
Is there any way - in standard C++ (or via STL/Boost) - to dynamically create a class by name in a similar way to the MFC RUNTIME_CLASS function?
For example, if I have a string that contains the class name, I want to be able to do something like:
char* s = "CMyClass";
CMyClass* pClass = CREATE_CLASS_BY_NAME(s);
|
|
|
|
|
No, simply because the pointer in which you will hold your variable is not known neither. So you cannot do that:
CMyClass* pClass
But if you need a system like that, you can still develop something yourself. First, what you need to have is that all classes that can be created by name should inherit from a common base class (so they can be manipulated the same way). Then, you can implement a factory class that will create the classes for you. Add a create method that will link the class name to a specific subclass.
For this step, the easiest is to have hard-coded names (basically a switch containing all possibles subclasses). If you need some more flexibility, you can add a map table into the factory that links a name to a creation function. Then, you can register new classes in the factory simply by adding the names and the creation function (each creation function is specific to a subclass).
If you need more details, don't hesitate to ask. I just explained briefly hoz you could do that. But in general this feature is not really necessary (chances are that you can solve your problem in another way).
|
|
|
|
|
Thanks Cedric. I already use class factories where possible (though usually using a unique ID for each derived class rather than a name), but I was hoping that I could write something very generic - it is a shame that the C++ RTTI support doesn't allow classes to be created by name. I am actually writing code to serialize an MFC format document (the app isn't using MFC itself) and thought that, if I could create classes by name, the serialize code would make an excellent CP article!
|
|
|
|
|
In general when you serialize something, you know what you are serializing and in which order the object are serialized. I'm pretty sure there is an alternative to your problem.
|
|
|
|
|
Well, the MFC method is quite generic. For example, you can serialize a CTypedPtrList that contains numerous classes, all derived from the same base class. However, I do have a class-factory-like solution now, but it still isn't as generic as I would like.
|
|
|
|
|
Hey Everybody,
I am trying to get access to my serial port through the CreateFile Method like this
HANDLE portHandle = CreateFile( L"COM3:", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0);
but it keeps giving me an invalid handle. I suspect it is the name of the port. I want to access comm port 3 . Any help would be greatly appreciated.
|
|
|
|
|
Try
CreateFile( "COM3",
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL );
Regards
Anil
|
|
|
|
|
Thank you for your reply but it does not work. For the first parameter it should be L"COM3" instead of just the "COM3" because compiler says that cannot convert char[5] to con. Is there any other solution way?
|
|
|
|