|
Thanks Alvaro,
I hoped there was a simpler solution. Perhaps only setting a flag or something
I realized it now, not overriding the OpenDocumentFile member function, but the MatchDocType function. This results in a much cleaner solution, since I don't have to copy code from the CSingleDocTemplate implementation
class CSingleReloadDocTemplate : public CSingleDocTemplate
{
DECLARE_DYNAMIC(CSingleReloadDocTemplate)
public:
CSingleReloadDocTemplate(UINT nIDResource, CRuntimeClass* pDocClass,
CRuntimeClass* pFrameClass, CRuntimeClass* pViewClass)
: CSingleDocTemplate (nIDResource, pDocClass, pFrameClass, pViewClass)
{
}
virtual Confidence MatchDocType(LPCTSTR lpszPathName, CDocument*& rpDocMatch)
{
Confidence confidence = CSingleDocTemplate::MatchDocType (lpszPathName, rpDocMatch);
if (yesAlreadyOpen == confidence && rpDocMatch->IsModified())
{
int answer = AfxMessageBox ("Do you want to reload the document", MB_YESNO);
if (answer == IDYES)
{
// set the document modification state to "not modified" so the document template
// will not complain during OpenDocumentFile ()
rpDocMatch->SetModifiedFlag(FALSE);
// tell the DocumentManager, that no document with this title is already opened
rpDocMatch = NULL;
confidence = yesAttemptNative;
}
}
return confidence;
}
};
IMPLEMENT_DYNAMIC (CSingleReloadDocTemplate, CSingleDocTemplate);
For a MultiDocTemplate one should perhaps close the found document in some way (perhaps via CDocument::OnCloseDocument) since the CMultiDocTemplate::OpenDocumentFile() function will not reuse an existing open document like the CSingleDocTemplate. I'm not sure wether there is a combined method for this task that can be used for a SingleDocTemplate and a MultiDocTemplate (perhaps one can use CDocument::OnCloseDocument() already)
Regards,
Dirk
|
|
|
|
|
I think I'm not doing it right:
typedef struct{
CTrio * pCTrio;
int indexOfParentDisplay; } TrioIndexStruct;
std::set<TrioIndexStruct*>::iterator trioIt = m_pTrioSet.begin();
for(; trioIt != m_pTrioSet.end(); trioIt++)
{
(*trioIt)->pCTrio->ShowWindow(SW_HIDE);
}
and I'm getting a crash at the SW_HIDE:
BOOL CWnd::ShowWindow(int nCmdShow)
{
ASSERT(::IsWindow(m_hWnd));
if (m_pCtrlSite == NULL)
return ::ShowWindow(m_hWnd, nCmdShow);
else
<code>return m_pCtrlSite->ShowWindow(nCmdShow); </code>
}
m_pCtrlSite isnt null.
Appreciate your help,
ns
|
|
|
|
|
More info is needed: How are you feeding m_pTrioSet ? What's the lifespan of the CTrio objects pointed to by those TrioIndexStruct s?
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
LRESULT CSTrainView::OnUDMShowPhoto(UINT index, UINT nDummy)
{
CString mineName;
CTrio* pCTrio = new CTrio;
if (pCTrio == NULL) return 1;
BOOL ret = pCTrio->Create(IDD_CTRIO, this, index);
if(!ret)
{
AfxMessageBox("Error creating photobox");
delete pCTrio;
return 1;
}
int tempIndex = m_imageIndexLo + index;
pCTrio->ShowWindow(SW_SHOW);
<code> TrioIndexStruct trioIndexStruct;</code>
trioIndexStruct.pCTrio = pCTrio;
trioIndexStruct.indexOfParentDisplay = index;
m_pTrioSet.insert(&trioIndexStruct);
PopulatePhotoDisplay(tempIndex, trioIndexStruct.pCTrio, &mineName );
pCTrio->SetPhotoCaption(mineName);
return 0;
}
The Struct is local, but since I'm inserting into a set, it makes a copy that doesnt go out of scope (this is what I gather).
Appreciate your help,
ns
|
|
|
|
|
The Struct is local, but since I'm inserting into a set, it makes a copy that doesnt go out of scope (this is what I gather).
No copy is made, here's the problem. Define m_pTrioSet as a std::set<trioIndexStruct> (no pointer), change everything accordingly and the thing should work.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
I'll try it as soon as my machine finishes burning a dvd....doesnt like me to do anything while its burning...
Thanks!
Appreciate your help,
ns
|
|
|
|
|
I had done that (and retried it). I get the following bunch of errors:
:\VC98\INCLUDE\functional(86) : error C2784: 'bool __cdecl std::operator <(const class std::deque<_Ty,_A> &,const class std::deque<_Ty,_A> &)' : could not deduce template argument for 'const class std::deque<_Ty,_A> &' from 'const CSTrainView::Trio
IndexStruct'
.........
e:\VC98\INCLUDE\functional(86) : while compiling class-template member function 'bool __thiscall std::less<struct CSTrainView::TrioIndexStruct>::operator ()(const CSTrainView::TrioIndexStruct &,const CSTrainView::TrioIndexStruct &) const'
e:\VC98\INCLUDE\functional(86) : error C2784: 'bool __cdecl std::operator <(const class std::reverse_iterator<_RI,_Ty,_Rt,_Pt,_D> &,const class std::reverse_iterator<_RI,_Ty,_Rt,_Pt,_D> &)' : could not deduce template argument for 'const class std::
reverse_iterator<_RI,_Ty,_Rt,_Pt,_D> &' from 'const CSTrainView::TrioIndexStruct'
e:\VC98\INCLUDE\functional(86) : while compiling class-template member function 'bool __thiscall std::less<struct CSTrainView::TrioIndexStruct>::operator ()(const CSTrainView::TrioIndexStruct &,const CSTrainView::TrioIndexStruct &) const'
e:\VC98\INCLUDE\functional(86) : error C2784: 'bool __cdecl std::operator <(const struct std::pair<_T1,_T2> &,const struct std::pair<_T1,_T2> &)' : could not deduce template argument for 'const struct std::pair<_T1,_T2> &' from 'const CSTrainView::T
rioIndexStruct'
e:\VC98\INCLUDE\functional(86) : while compiling class-template member function 'bool __thiscall std::less<struct CSTrainView::TrioIndexStruct>::operator ()(const CSTrainView::TrioIndexStruct &,const CSTrainView::TrioIndexStruct &) const'
e:\VC98\INCLUDE\functional(86) : error C2676: binary '<' : 'const CSTrainView::TrioIndexStruct' does not define this operator or a conversion to a type acceptable to the predefined operator
e:\VC98\INCLUDE\functional(86) : while compiling class-template member function 'bool __thiscall std::less<struct CSTrainView::TrioIndexStruct>::operator ()(const CSTrainView::TrioIndexStruct &,const CSTrainView::TrioIndexStruct &) const'
Error executing cl.exe.
STrain.exe - 10 error(s), 29 warning(s)
Appreciate your help,
ns
|
|
|
|
|
looks like it can't find your const operator < function :
bool operator < (const blah & a, const & blah b) const;<code> <br />
<br />
<hr><br />
<font size="-2" color="#6060af">When history comes, it always takes you by surprise.</font><br />
<div align="right"><font size="-1"><a href="http://www.smalleranimals.com/bobber.htm">Bobber!</a></font></div>
|
|
|
|
|
Someone showed me how to write a < operator for the set, since it needs it to compare the structs when its reaaranging the items automatically as they get inserted. Thanks!
Appreciate your help,
ns
|
|
|
|
|
Hai..
In richeditctrl when the test is selected by default the foreground color is white and background color is black. But i have to change change this foreground color to red and background is yellow.
How i can change this selected text colors??
Thanks in Advance
RednamRao
|
|
|
|
|
Hello there,
Use CRichEditCtrl::SetSelectionCharFormat(CHARFORMAT2& cf ).
It allows you to change the selected text and selected background color.
Art
|
|
|
|
|
Hi !!
I need to plot channels on a chart but these channels can be chosen using a pop-up menu (by clicking on the chart). The problem is that when I do this, everything is frozen and I really need to continue the acquisition and the plotting of the points.
The plotting of the points must be done in the main Thread cause I'm using the document/View architecture and I need to exchange informations between these classes.
Does anyone know how to do this ??
Thanks!
|
|
|
|
|
Hi! How can I create a view (CSrollView) in my dialog (no in dialog applicattion) ? Thanks.
Termi
|
|
|
|
|
I want to beef up the appearance of my SDI appln by first poping up a welcoming window upon startup. In that window I'd have bitmaps and text. The window would show for, say, 10 secs before the main appln window. Could anyone direct me on how to create such a welcome window? Thx,
Ralf.
ralf.riedel@usm.edu
|
|
|
|
|
This is commonly known as a splash screen. You should have no problem finding an implementation (maybe even here on CP, haven't checked) on the net.
|
|
|
|
|
You can use your own Visual C++ IDE to do this:
"Project->Add to project->Components and controls", then choose "Visual C++ Components" and "splash screen".
This will do almost all the work...
hope this helps.
NOTE:
Even I know that I prefer to use some implementations that are easily found here in CP.
|
|
|
|
|
MSDN has a sample called SuperPAd that does this
Regardz
Colin J Davies
Sonork ID 100.9197:Colin
I'm guessing the concept of a 2 hour movie showing two guys eating a meal and talking struck them as 'foreign'
Rob Manderson wrote:
|
|
|
|
|
How to show a PNG image in my dialog ? thanks
|
|
|
|
|
Take a look at CxImage. It's a great image processing library with support for TONS of different image formats.
http://codeproject.com/bitmap/cximage.asp[^]
Good Luck!
-Mike Zinni
"No sh*t it's tough. If it wasn't, everybody and their sister would be an engineer and then you wouldn't have a job."
|
|
|
|
|
Thanks
|
|
|
|
|
You may happily use GDI+ if you need, it's the Platform SDK and no third-party stuff (at least for me - a virtue).
Regards,
Bartosz Bien
|
|
|
|
|
Use libpng[^] and be more portable.
|
|
|
|
|
AOA!
last night as i was trying to do one of my Assignments i tried to open a form using my Class inherted from CFormView!
the problem is that i was able to show the form as i want but as i close this window using the CWnd::DestroyWindow() i get an Assert Failure!
the Code i am using to initialize the window is as follows:
//defined in MyClass.h;
CMyClass Form;
CMyMainView::OnInitialUpdate()
{
CView::OnInitialUpdate();
CRect Rect;
GetClientRect(Rect);
Form.Create(NULL,"NewForm",WS_VISIBLE|WS_BORDER|WS_CHILD,Rect,this,1234,NULL);
}
And to Destroy the Window
CMyMainView::OnFileNew()
{
Form.DestroyWindow();
}
i cant understand y i get the assert failure when i click the new button on the toolbar!
the Assert Failure Message i get is as follows:
Debug Assertion Failed!
Program:E:\Chummi.exe
File:dbgheap.c
Line:1101
Expression:_CrtIsValideHeapPointer(pUserData)
//bla bla bla
plz help!
shoaib!
|
|
|
|
|
Here's my issue:
(note: this is x-posted in OS/Admin)
I'm calling an instance of IE from an NT service. If the
currently logged-on user is using a proxy server in their
profile, this setting is never seen by the instance of
the browser tht I just spawned. Starting the browser as
the correct user doesnt help either.
So, my question is: Does anyone know of a way to make
Internet Explorer read the correct user profile when I'm
spawning it? Or is everyone that uses a proxy setting
screwed if they run my software?
Thanks...
....alan
|
|
|
|
|
showing the screen....
Hello,
I'm creating an MFC application that does a heavy process consisting of file I/O and database handling. It's an SDI application.
The application has a modeless dialog box that informs the user about what is currently being done by it.
It works fine.
My problem is that if I minimize it while it's processing, or if I click on anohter window to do other stuff while my program processes, and then I try to show it again (clicking on it on the task bar), it won't appear until the processing is finished. But this is not what I want for two reasons:
1. it's a heavy and long processing, so the user need to be able to SEE what the program is doing, to feel that's working and not 'frozen'.
2. it's a long processing, so the user will most like do other stuff in his PC meanwhile.
So what I need is that when the user clicks on it the form appears.
How can do this?
-- narada
|
|
|
|