|
Zac Howland wrote: There is a reason why the DirectX libraries define the following macro
Yep, there is: Microsoft DirectX programmers don't know C++ very well.
My programming blahblahblah blog. If you ever find anything useful here, please let me know to remove it.
|
|
|
|
|
Zac Howland wrote: Calling delete NULL has undefined behavior and should be avoided.
Nope, delete NULL is required by the C++ Standard to do nothing.
It is perfectly safe.
My programming blahblahblah blog. If you ever find anything useful here, please let me know to remove it.
|
|
|
|
|
Always NULL the pointer after deleting it. Otherwise you could (if you're not very, very careful) try to delete the same pointer twice, which will result in an access violation.
Deleting a NULL pointer however is perfectly safe.
|
|
|
|
|
Another reason for doing that is that the address used for the recently-deallocated memory may still be valid in your address space and while not technically valid for use, accessing it might not cause an IPF or Access Violation. For example:
TCHAR *pcBuffer = new TCHAR[ 1024 ];
delete [] pcBuffer;
pcBuffer[ 1 ] = _T( 'A' ); The above code may not crash even though the pointer is technically invalid.
By setting it to NULL , you just about guarantee that accessing it will cause an Access Violation (at least if on Win32 and if the access range of the pointer is < 4096 , because that hits the reserved "NULL pointer page" which causes an instant exception, IIRC).
Peace!
-=- James If you think it costs a lot to do it right, just wait until you find out how much it costs to do it wrong! Avoid driving a vehicle taller than you and remember that Professional Driver on Closed Course does not mean your Dumb Ass on a Public Road! DeleteFXPFiles & CheckFavorites (Please rate this post!)
|
|
|
|
|
Can anyone tell me the function call to get the path of the application... i cant for the life of me remember..
Thanks
Lee
|
|
|
|
|
See GetModuleFileName
whitesky
|
|
|
|
|
|
|
The current directory and the "path of the application" are not necessarily the same thing. Most requests are for the latter.
"The largest fire starts but with the smallest spark." - David Crow
|
|
|
|
|
Hi All,
I want to make package for my project, can anyone help me with this..so that i can install in other system.
Regards,
Vinay Charan.
|
|
|
|
|
|
You can try one of the following setup packagers (free):
NSIS[^]
WiX[^]
|
|
|
|
|
I would be very grateful to anyone who could give me some easy code to tell me how timers can be used in a MFC application in VC++6.0...
MSDN is not that helpful in the matter as i am getting only .NET hits...
I need to be able to call a purticular member function of the dialog class on timer event..
Sharath
|
|
|
|
|
|
Define a timer id
#define ID_MYTIMER 201
Use SetTimer to set and initiate the timer .
SetTimer(ID_MYTIMER,1000,NULL);//1000 is the mseconds
Put your code in the OnTimer function . You can find it using the Class Wizard.
Use KillTimer() to stop the timer
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
-- modified at 7:22 Friday 2nd June, 2006
|
|
|
|
|
There is one important thing to remember when dealing with Windows timers that people often forget. The SetTimer function returns the ID of the created timer. There is no guarantee that the actual returned ID of the created timer will be the same ID as requested.
The return value of SetTimer(...) should be used to identify the timer in the timer-handling function and when destroying the timer.
(Note that the link provided below to http://www.codersource.net/mfc_working_with_timers.html does this correctly, although it does something really stupid in the OnTimer(...) by using dynamically allocated memory for no good reason...)
Peace!
-=- James If you think it costs a lot to do it right, just wait until you find out how much it costs to do it wrong! Avoid driving a vehicle taller than you and remember that Professional Driver on Closed Course does not mean your Dumb Ass on a Public Road! DeleteFXPFiles & CheckFavorites (Please rate this post!)
|
|
|
|
|
|
hi
I want to invoke the default mail client with a specific file as attachment.
i tried mailto:xyz@xyz.com&Attach=".." but could not invoke the mail client with the attachment.
So I tried another approach by using a dll which uses MAPI and was able to invoke the default mail client with attachment but this doesn't work with MS Outlook.
is there any other way to accomplish this??
Any links or suggestions would do fine.....
"Every morning I go through Forbes list of 40 richest people in the world. If my name is not in there, I go to work..!!!"
-- modified at 7:20 Friday 2nd June, 2006
|
|
|
|
|
Nope. At least not consistently. MAPI doesn't define the URL layout that an e-mail client should handle.
As you've seen, what works with one client won't work with another.
You might be able to look up the default e-mail client, or let a user choose if there are more than one, and then use the correct format for the client.
Brad
|
|
|
|
|
QuickDeveloper wrote: Any links or suggestions would do fine.....
SMTP
MAPI
"The largest fire starts but with the smallest spark." - David Crow
|
|
|
|
|
|
I need to implement a worker thread in an dialog based MFC. the thread callback function (controlling function that i want to use must be a member of the dialg class itlself but the only functions that the AfxBeginThread function is accepting is the function identifier of a global function of type
AfxBeginThread(MyFunc,....);
//the above statement is to be used in a member funciton(button click event) of a dialog based //MFC.exe
UINT MyFunc(LPVOID lpParam);
How can i use AfxBeginThread if MyFunc also needs to be part of the MFC dialog Class.
Any help in this matter would be great.
If any sample code can be given that would be wonderful.
Sharath
|
|
|
|
|
First declare a funtion in your class
static UINT MyFunc(LPVOID pParam);
now onButtonClick()
<br />
OnButtonClick()<br />
{<br />
CWinThread* pThread = AfxBeginThread( MyFunc, this,<br />
THREAD_PRIORITY_NORMAL,<br />
0, CREATE_SUSPEND, NULL);<br />
<br />
if( pThread != NULL ){<br />
pThread->ResumeTrhead();<br />
}<br />
}<br />
<br />
UINT classname::MyFunc(LPVOID pParam)<br />
{<br />
classname* obj;<br />
obj = (classname*)pParam;<br />
...<br />
}<br />
Regards
Anil
-- modified at 7:22 Friday 2nd June, 2006
|
|
|
|
|
Thanks a lot it worked...too good i have saved a lot of time thanks to your reply...
|
|
|
|
|
When using worker threads keep this in mind. Don't directly manipulate any window / control that your thread did not create! If you must update a window / control, post a message by using PostMessage to the main thread.
Please read Joseph Newcomer's essay on worker threads here: Using Worker Threads[^].
Kelly Herald
Software Developer
MPC
|
|
|
|