|
Member 4760200 wrote: In general, what the thread does is: Creating and sending an e-mail containing a file attachment using an Outlook or Lotus Notes client (if installed on the system).
Running the thread once always works fine, and it terminates correctly. However, when i try to run it for a second time, it throws an exception in MFC42.DLL, unfortunately not always at the same code line, but more or less randomly, esp. during manual debugging:
I would look up the MFC implementation of the send mail command in CDocument, and adapt the code to my purposes, rather than sending it through Outlook or Lotus Notes. If I did need to do it that way, one of the first questions I'd ask is "What exception is being thrown?" Also, in general returning 1 is not adequate for handling unknown exceptions. Terminating the whole program is more reasonable. Finally, the random nature of the exception sounds like a race condition, and since it doesn't go away when you debug, I would guess that you are calling functions that are intended to be called from only one thread for the duration of the process. I'm sorry I can't be more helpful.
Nathan
|
|
|
|
|
Hi,
Isn't it possible to subclass a window in the explorer process, using CWnd::SubclassWindow() ?
My intention is to skin the systray clock.
What I did:
1. Created a MFC dll.
2. Injected it to the explorer process using "CreateRemoteThread - LoadLibrary" technique.
3. Took the window handle of systray clock in the dll's InitInstance.
4. Replaced the window proc using SetWindowLong.
These were successful, and in the replaced proc, I could do the custom draw by processing WM_PAINT.
The problem:
I derived a class from CWnd, say CMyClock. And subclassed the systray clock window with CMyClock object (member) instead of proc replacement. Now the explorer crashes.
I tried to debug the explorer process.
I found that subclassing is fine, and InitInstance completed successfully. After a very little time it crashed and the call stack was as follows...
ntdll.dll!7c901230()
> msvcr71d.dll!_CrtDbgBreak() Line 93 C
msvcr71d.dll!_CrtDbgReport(int nRptType=2, const char * szFile=0x01b44c68, int nLine=384, const char * szModule=0x00000000, const char * szFormat=0x00000000, ...) Line 427 C
mfc71d.dll!AfxAssertFailedLine(const char * lpszFileName=0x01b44c68, int nLine=384) Line 28 + 0x14 C++
mfc71d.dll!AfxWndProc(HWND__ * hWnd=0x000f01c8, unsigned int nMsg=15, unsigned int wParam=0, long lParam=0) Line 384 + 0x15 C++
MyClockDll.dll!AfxWndProcDllStatic(HWND__ * hWnd=0x000f01c8, unsigned int nMsg=15, unsigned int wParam=0, long lParam=0) Line 53 + 0x15 C++
user32.dll!7e418734()
user32.dll!7e418816()
user32.dll!7e41b4c0()
user32.dll!7e41b50c()
ntdll.dll!7c90eae3()
user32.dll!7e4194d2()
user32.dll!7e41b530()
user32.dll!7e42d950()
user32.dll!7e418a10()
user32.dll!7e42dbbf()
user32.dll!7e42593f()
user32.dll!7e43a91e()
What could be wrong? Any suggestions or ideas?
Thanks in advance.
|
|
|
|
|
Hello everyone,
Is the conclusion correct? Both const reference and non-const reference are lvalue?
I think it is true and I can not find a sample which does not follow it.
thanks in advance,
George
|
|
|
|
|
I suppose if you're returning a reference from a function then it's not an lvalue.
|
|
|
|
|
Thanks Budric,
Could you show a sample please?
regards,
George
|
|
|
|
|
hi to all
i want to get the number of lines shown in editbox.
thank u
|
|
|
|
|
|
Hello...guru's
I am writing a program in VC++ its database related application.
In this case i fetch data from Oracle database.using CRecordset class.
When i write below code
no_field = rs.GetODBCFieldCount();
while(!rs.IsEOF())
{
for(i=0;i<no_field;i++)
{
rs.GetFieldValue(i,sString);
if(i==0)
{
SetDlgItemText(IDC_EDIT_DATE1,sString);
}
if(i==1)
{
SetDlgItemText(IDC_EDIT_DATE2,sString);
}
if(i==2)
{
SetDlgItemText(IDC_EDIT_UPDT,sString);
}
}
sString.Empty();
rs.MoveNext();
}
Although above code is work fine.........
but i want to get rid of from if else condition.....This method is fine for fetching certain field from database .But if table contain 200 or more entity in a row then i need to write 200 or more if else condition...
Can any one give me berief idea how can i do this apart from this way.........
Thanks in Advanced
Regard's
Kaushik
|
|
|
|
|
Instead use of if you can use of switch.
Switch(i)
{
case 0:
break;
case 1:
break;
default:
break;
}
|
|
|
|
|
And how can he get rid of the 200 tests conditions by using a switch ?
|
|
|
|
|
Open the resource file and give adjacent Id's for your controls. This, way, you can simply do something like this:
SetDlgItemText(IDC_FIRST_CTRL_ID+i,sString);
|
|
|
|
|
Two things you could do here.
Use a switch statement
<br />
switch i<br />
{<br />
case 1:<br />
break;<br />
case 2:<br />
break;<br />
}<br />
but I wouldn't recommend that if you really have 200 fields and 200 controls on your dialog. If that's the case the easiest way is to ensure the values of your control id's are sequential and then do something like this
<br />
for(i=0;i<no_field;i++)<br />
{<br />
rs.GetFieldValue(i,sString);<br />
SetDlgItemText( BASE_FIELD_CONTROL_ID + i, sString);<br />
sString.Empty();<br />
rs.MoveNext();<br />
}<br />
you might want to use different ranges based on field/control types and use a switch to change the SetDlgItemText call.
Nothing is exactly what it seems but everything with seems can be unpicked.
|
|
|
|
|
Thanks for reply ....
I follow second method... give the control adjacent
like IDC_CONTROL , IDC_CONTROL+1, IDC_CONTROL+2, and so on...
and i am very near to solve problem...
Thanks again for reply to all's
Note : Is it possible for me to get control handle at run time.
Regard's
Kaushik
|
|
|
|
|
Hi all,
Actually i want to give my exe, version number, copyright information dynamically. Is it poosible to do so.....
|
|
|
|
|
How dynamic is "dynamically"?
Here, our build-server includes a small, generated file with a version resource in the main resources of the project.
That way, the version number is set automagically.
Let's think the unthinkable, let's do the undoable, let's prepare to grapple with the ineffable itself, and see if we may not eff it after all. Douglas Adams, "Dirk Gently's Holistic Detective Agency"
|
|
|
|
|
you mean the stuff that shows up in the Explorer Properties page after you right-click on the EXE's icon ?
no, that's not possible.
that stuff comes from examining the EXE file directly, not from executing the EXE in any way.
|
|
|
|
|
pls help me...
I am connecting a webcam to my computer thorugh usb port.can anybody help me to write a code in vc++ or c++ to check whether the camera is connected or not.
|
|
|
|
|
hi all.,
as part of my MFC app i have to write data into CD ROM., for that i got code form Microsoft , it is purly in win 32 -SDK, fine
they have used "Imapi.h" header file form SDK, but i dont have latest version of SDK in my XP machine, but i installed SP2, i try to download form Microsoft., fine
but i was not able to install the version of SDK,
can any one help me to get latest version of SDK (XP) or if any one have "imapi.h" header file, just send it to me
thanks
shiva
|
|
|
|
|
|
palanirajan wrote: if any one have "imapi.h" header file, just send it to me
That's stupid. What will you do with a header file but no correct library file ?
The only correct thing to do is to download the required platform SDK from microsoft. So, what problem are you having there ?
|
|
|
|
|
hi everyone.....
am having my icon in system tray.......
if i right click the icon there should be some options...
how to add right click functions?
can help anyone?
thangs....
regards,
Paul.G
paulraj
|
|
|
|
|
If you are Win32 or not but you can make new resoure in which you can create new Menu and you can add it to that icon.
You can process that menu items by making window procedure to handle those menu messages.
|
|
|
|
|
hi...
can you tell somewhat briefly...
paulraj
|
|
|
|
|
|
When you add your tray icon with Shell_NotifyIcon(), specify
a window handle and a callback message along with the NIF_MESSAGE
flag.
When the window receives that message, check the LPARAM
for WM_RBUTTONUP or WM_CONTEXTMENU. If you receive the
message you want, you can use TrackPopupMenu to show a menu, or
display some other kind of UI.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|