|
|
Thanks Steve,
My question is answered.
regards,
George
|
|
|
|
|
My project contains client application and server application. Always using server to control the client side. A Dialog at client side using a CFileDialog to open a image file. the problem is, after the server side close client side dialog, but the CFileDialog remains on screen.
We tried lots of way to close CFileDialog, but failed.
like EndDialog(), EndModalLoop(IDCANCEL) EndModalLoop(IDOK), and PostMessage(WM_KEYDOWN,VK_ESCAPE, 0)
So....what can I try next?
--
I create a demo to show this problem. Dialog A calls Dialog B, and Dialog B calls a CFileDialog, then add timer event in Dialog A to Destroy Dialog B. the CFileDialog was closed too.
Does this demo wrong to reproduce this problem?
|
|
|
|
|
You have probably not set the parent window of the CFileDialog.
|
|
|
|
|
Thanks for your reply. I tried set fFileDlg.m_pOFN->hwndOwner = this->GetParent()->m_hwnd , but it's doesn't work.
-- WuJunyin
|
|
|
|
|
Can you show me the code fragment regarding this?
|
|
|
|
|
<br />
CString strFilter = "..."; <br />
CFileDialog fFileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,strFilter,NULL);<br />
fFileDlg.m_pOFN->hwndOwner = this->GetParent()->m_hwnd;<br />
<br />
if (fFileDlg.DoModal() == IDOK)<br />
{<br />
...<br />
}<br />
|
|
|
|
|
Try like this...
CFileDialog fFileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,strFilter,this);
//fFileDlg.m_pOFN->hwndOwner = this->GetParent()->m_hwnd;
if (fFileDlg.DoModal() == IDOK)
|
|
|
|
|
I have tried it before I post this message.
|
|
|
|
|
Are you sure that the file dialog is coming as modal? Means can you switch the focus to the main dialog when the file dialog is open?
|
|
|
|
|
I'm sure it's coming as modal, and i cannot switch after the filedialog appeared.
------ WuJunyin
|
|
|
|
|
How is the main window is closed, by the server? Can you please show me the relevant codes?
|
|
|
|
|
Thank you for your help.
This bug has been fixed.
|
|
|
|
|
Could you please tell me what the problem was?
|
|
|
|
|
The point is CFileDialog cannot find its parentswindow.
At first, we close CFileDialog directly.
But this time, when the server side closes application, the client side let CFileDialog finds its parents first, then shut down its parentswindow. The CFileDialog is closed at the time of its parentswindow closed.
|
|
|
|
|
WuJunyin wrote: A Dialog at client side using a CFileDialog to open a image file. the problem is, after the server side close client side dialog, but the CFileDialog remains on screen.
Such a problem can occur only if the file open dialog is not the child of the Dialog. This may happen if you are showing the dialog from a separate thread. try setting the m_ofn.hwndOwner of the CFileDialog with the handle of your dialog.
CFileDialog dlg(1);<br />
dlg.m_ofn.hwndOwner = m_hWnd;
dlg.DoModal()
Its only a guess. just try.
|
|
|
|
|
Thanks for your reply.
It's doesn't work.
-- WuJunyin
|
|
|
|
|
Hello all,
I am being driven crazy by the following stupid run-time error, and I would appreciate very much if someone could help me resolve it. Particulatly, I have the following code:
1: CMimeMessage msg;
2: msg.AddRecipient(_T("to@yahoo.com"));
3: msg.SetSender(_T("from@yahoo.com"));
4: msg.SetSubject(_T("Greetings"));
First three lines of code work perfect. But when I try to execute the 4th one, I get a runtime error, and when I click to retry, I am redirected to following piece of code in file: atlspriv.h.
inline BOOL AtlMimeConvertStringW(
__in IMultiLanguage *pMultiLanguage,
__in UINT uiCodePage,
__in LPCWSTR wszIn,
__out_ecount_part_z(*pnLen, *pnLen) LPSTR *ppszOut,
__inout UINT *pnLen) throw()
{
ATLENSURE( pMultiLanguage != NULL );
ATLENSURE( wszIn != NULL );
...
Has anybody any idea what can be wrong here ? The funny thing is that, all methods in previous code require same parameter, i.e. LPCTSTR, so why should one fail, when another doesnt ?
I dont know, I am confused
I would appreciate any hints, or whatever..
PS. I googled and found out that someone, fixed the problem by using ::CoInitialize(NULL) call, but I cant us it, as it is obsolete in VS2005. ( http://www.tech-archive.net/Archive/VC/microsoft.public.vc.atl/2007-02/msg00055.html )
|
|
|
|
|
stack overwrite?
What happens in the debugger?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br />
Peter Weyzen<br />
Staff Engineer<br />
<A HREF="http://www.soonr.com">SoonR Inc -- PC Power delivered to your phone</A>
|
|
|
|
|
ATLENSURE( pMultiLanguage != NULL ); // THIS ASSERTION IS THE ONE THAT FAILS !!!
|
|
|
|
|
well, that's why I said it might be someone overwriting the stack...
What happens in the debugger?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br />
Peter Weyzen<br />
Staff Engineer<br />
<A HREF="http://www.soonr.com">SoonR Inc -- PC Power delivered to your phone</A>
|
|
|
|
|
Hi all. My goal here is to copy the currently used file. Then start the new file and delete the old one. An update sequence if you will.
My code:
<br />
#include <iostream><br />
#include <windows.h><br />
using namespace std;<br />
<br />
int main(int argc, char *argv[])<br />
{<br />
char *file="program.exe";<br />
char *currentfile = argv[0];<br />
CopyFile(currentfile, file, FALSE);<br />
<br />
if(file == currentfile){ <br />
Sleep(8000);<br />
DeleteFile(argv[1]);<br />
}<br />
else{<br />
ShellExecute(0,"open", file, argv[0], 0, SW_SHOW);<br />
exit(1);<br />
}<br />
return 0;<br />
}<br />
Im stumped trying to figure this out. Any suggestions will be accepted (as long as their helpful =P). I think its trying to delete itself, which is 'not' what im trying to do. So if anyone can help me figure out what im doing wrong i'd be very greatful. Thanx in advance!
|
|
|
|
|
I can't figure out what you are really trying to do.
First thing I've noticed is that. you are mainly dealing with a hardcoded file name "program.exe" and passed argument value which is in argv[0]. But you are trying to delete a file which is in argv[1]. I doubt you are really intended to deal with that parameter.
-Sarath.
"Great hopes make everything great possible" - Benjamin Franklin
|
|
|
|
|
Sarath. wrote: I can't figure out what you are really trying to do.
"My goal here is to copy the currently used file. Then start the new file and delete the old one."
I've already said that, i _know_ the code is wrong. Im asking for help in trying to fix it.
|
|
|
|
|
Sorry if I misinterpreted your question. Seems someone else already answered your question.
In addition you will have to use strcmp or any other string comparison routine to compare the strings...
-Sarath.
"Great hopes make everything great possible" - Benjamin Franklin
|
|
|
|