|
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?
|
|
|
|
|
Use:
CreateFile("\\\\.\\COM3", ...);
"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
|
|
|
|
|
Dear All,
I am absolutely sorry for this stupid question.
But please explain me in very simple manner!!
But I dont seem to understand CWnd::SubClassWindow(HWND); exactly.
Now here I am subclassing what to what?
Am I subclassing HWND to CWnd ?
Or
Am I subclassing CWnd to HWND ?
What does it mean SubclassWindow exacly.
Here I have many guesses like customised handlers of CWND to work for HWND.
May be subclassing means making one window a child of another which has to be the container and make the child behave more like container . Also make the messages available to Subclassed window which were unavailable before and available messages in more different way.
Which context can I use it?
Please please please somebody explain it in more detailed fashion.
A kid in the block. (
-- Lee
|
|
|
|
|
FROM MSDN:
just an attempt to help u
Call this member function to "dynamically subclass" a window and attach it to this CWnd object.
BOOL SubclassWindow(
HWND hWnd
);
Parameters
hWnd
A handle to the window.
Return Value
Nonzero if the function is successful; otherwise 0.
Remarks
When a window is dynamically subclassed, windows messages will route through the CWnd's message map and call message handlers in the CWnd's class first. Messages that are passed to the base class will be passed to the default message handler in the window.
This member function attaches the Windows control to a CWnd object and replaces the window's WndProc and AfxWndProc functions. The function stores a pointer to the old WndProc in the CWnd object.
Note The window must not already be attached to an MFC object when this function is called.
Example
// The following code shows how to subclass the edit control and list box
// controls inside a combo box. It uses WM_CTLCOLOR for subclassing.
// CSuperComboBox represents the combo box
HBRUSH CSuperComboBox::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
if (nCtlColor == CTLCOLOR_EDIT)
{
//Edit control
if (m_edit.GetSafeHwnd() == NULL)
m_edit.SubclassWindow(pWnd->GetSafeHwnd());
}
else if (nCtlColor == CTLCOLOR_LISTBOX)
{
//ListBox control
if (m_listbox.GetSafeHwnd() == NULL)
m_listbox.SubclassWindow(pWnd->GetSafeHwnd());
}
HBRUSH hbr = CComboBox::OnCtlColor(pDC, pWnd, nCtlColor);
return hbr;
}
void CSuperComboBox::OnDestroy()
{
//unsubclass edit and list box before destruction
if (m_edit.GetSafeHwnd() != NULL)
m_edit.UnsubclassWindow();
if (m_listbox.GetSafeHwnd() != NULL)
m_listbox.UnsubclassWindow();
CComboBox::OnDestroy();
}
|
|
|
|
|
|
I recommend you use the standard CListCtrl from MFC, setting the LVS_EX_CHECKBOXES extended style, using the CListCtrl::SetExtendedStyle(...).
|
|
|
|
|
I noticed this problem a few days ago, but so far I am coming up blank. Also I have been unable to recreate the problem in a scaled down application.
My main window is a dialog created with CreateDialog(), it contains quite a few controls, one of them being a simple EditBox. I am calling DestroyWindow() from WM_CLOSE and it is crashing the app with an "Access violation". Now it only crashes when Chinese charcters are in the mentioned EditBox, and not English. MBCS and UNICODE make no difference.
I have also tried using DialogBox() and EndDialog() yet I have the same problem. Now I should note, Chinese characters are displayed in ComboBoxes, ListViews and Static controls, causing no problems. This only happens when Chinese is typed into the control (using an IME) it does not occur when pasting characters. I have not tried this with any other IME or languages. This will only report an error or crash when running through the debbuger.
I am now going to convert this control to a RichEdit, hopefully the problem will go away. But if anybody has an idea about why or how this is happening I would be glad to know.
|
|
|
|
|
I am using CListrCtrl with Report style. On init dialog i fill the listctrl.
I am Facing One Problem.
Whenever i resize the column the scroll bar disappears.
so plz give the solution for this.
Mahesh
|
|
|
|