|
Hi,
I ahve a problem with one of my Doc-View Application. In fact, I am novice in doc-view apps. I have a CFormView based SDI app coded in Visual C++ 6.0 environment. The user interface has three modeless dialogs embedded in a CTabCtrl, One ChartCtrl and CListCtrl. I observed a funny behaviour while opening a stored document (not Word document) by double clicking on it. The view is not getting updated correctly. But if I open the the file by File-> Open command, every thing working fine.
Let me explain a bit about how I coded the app for better comprehension.
1. The document has a user defined class which handles the serialization on its own (based on Ravi Bhavnani code).
2. The List control paints its contents using NMCustomDraw feature.
3. By digging into the code I could find that OnNewDocument() function is not getting called while opening tha App from Shell (i.e. by double clicking on the file), instead the OnOpenDocument() is called. And all other Doc->DeleteContents() and Serailization, View->IntialUpdate() and View->OnUpdate() working OK but the List Control not getting updated.
4. But if you open the file by File ->Open command, since the SDI app gets started with a new document every thing looks OK.
5. Same is the case by opening with command line Start-> Run-> MyApp xyz.tnf .
6. I found even the OnCustomDraw() function getting called.
7. I then tried to get into the undocumented DocManager classes etc. but I couldn't get much help. Even opening file from the Shell, I find App gets one empty document. This I got confirmed with DocManager class other functions.
Finally what I could find is that, the View and Document connection in the low level framework is at fault.
I would be grateful for any help in this regard.
I remain,
Shanmukha
|
|
|
|
|
Updated:
I add /Op as a compiler option for release version, it's ok.
It quite likes a comparing inaccuracy problem.
Try tomorrow...
zzzzzz
-----------------------
I use these functions to change the lum of an rgb color.
The debug version and release versions have different result.
Why? Thanks.
void RGB2HSL(COLORREF rgb,REAL *pH,REAL *pS,REAL *pL)
{
REAL var_R=REAL(GetRValue(rgb))/255.f;
REAL var_G=REAL(GetGValue(rgb))/255.f;
REAL var_B=REAL(GetBValue(rgb))/255.f;
REAL var_min=min(var_R,var_G);
var_min=min(var_min,var_B);
REAL var_max=max(var_R,var_G);
var_max=max(var_max,var_B);
REAL delta_max=var_max-var_min;
*pL=(var_max+var_min)*0.5f;
if (delta_max==0.f) {
*pH=0.f;
*pS=0.f;
} else {
if (*pL<0.5f)
*pS=delta_max/(var_max+var_min);
else
*pS=delta_max/(2.f-var_max-var_min);
REAL delta_R=(((var_max-var_R)/6.f)+(delta_max*0.5f))/delta_max;
REAL delta_G=(((var_max-var_G)/6.f)+(delta_max*0.5f))/delta_max;
REAL delta_B=(((var_max-var_B)/6.f)+(delta_max*0.5f))/delta_max;
if (var_R==var_max)
*pH=delta_B-delta_G;
else if (var_G==var_max)
*pH=(1.f/3.f)+delta_R-delta_B;
else if (var_B==var_max)
*pH=(2.f/3.f)+delta_G-delta_R;
if (*pH<0.f) ++*pH;
if (*pH>1.f) --*pH;
}
}
inline REAL Hue_2_RGB(REAL v1,REAL v2,REAL vH)
{
if(vH<0.f)
++vH;
if(vH>1.f)
--vH;
if((vH*6.f)<1.f)
return(v1+(v2-v1)*vH*6.f);
if((vH*2.f)<1.f)
return(v2);
if((vH*3.f)<2.f)
return(v1+(v2-v1)*((2.f/3.f)-vH)*6.f);
return(v1);
}
void HSL2RGB(REAL H,REAL S,REAL L,COLORREF &rgb)
{
REAL R,G,B;
if (S==0.f) {
R=L*255.f;
G=L*255.f;
B=L*255.f;
} else {
REAL var_1,var_2;
if (L<0.5f)
var_2=L*(1.f+S);
else
var_2=(L+S)-(S*L);
var_1=L*2.f-var_2;
R=Hue_2_RGB(var_1,var_2,H+(1.f/3.f))*255.f;
G=Hue_2_RGB(var_1,var_2,H)*255.f;
B=Hue_2_RGB(var_1,var_2,H-(1.f/3.f))*255.f;
}
rgb=RGB(R,G,B);
}
modified on Saturday, February 02, 2008 1:02:11 PM
|
|
|
|
|
So what is the difference while compile (or executable) in kind of two mode?
|
|
|
|
|
I don't known in detail.
I'm finding a quick answer.
|
|
|
|
|
I chnaged the way of equality comparison from
S==0.f
to
S>-0.000001f && S<0.000001f
It seems ok, and must be faster than using
"/Op" or pragma optimize("p",on)
|
|
|
|
|
I'm not complete sure on what is the problem because i never worked before on such like works-area just as go deeply into it. You might use to the #ifdef statement at this like condition.
#ifdef _DEBUG<br />
#pragma optimize("p", on or off
|
|
|
|
|
Fine, another good choice.
|
|
|
|
|
Hi,
I am on the road (abroad) and find that I have to resolve a support issue on a product written MFC C++ in MSVC6. My laptop does not have it - and the guy who is responsible cannot attend to it. I can have someone hunt for the original CDs couriered to me - but this will take some time that I really do not have. Is there any where I cann download it. We have MSDN but have not found a download for that - even though I located the SP6 update. Any Ideas? Please help!!
|
|
|
|
|
Hmm, Ah, Ah ACHHHgoogleHHO!, sorry my nose is crazy today, Ah, Ah ACHHtorrent!
I dunno were you can find it, why ask us when you can ask Google?
//Johannes
|
|
|
|
|
*snicker*
Johannes I got your email - i had a conference call yesterday - I'll get back to you on that stuff.
Cheers,
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Cool,
Why not go on MSN for a bit?
//Johannes
|
|
|
|
|
'm only here for about 20 more minutes...
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Have someone dig up the disks and copy them to a server you can download them from
Should be a little faster than courier...
Of course, any real developer on the road should have the disks along
as part of his "hero kit"
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Mark Salsbery wrote: "hero kit"
Discs in the checked luggage, another copy in the carry-on, and a third copy on the memory stick in the pocket.
Quite a change from the first time I traveled when I had a second suitcase just for the nine-track tapes. Yes, I said tapes. All right now, dammit, stop snickering at the old guy and his pathetic reminiscing.
|
|
|
|
|
Heh. Maybe you're just a little older more seasoned than me...
My first kits were 5 1/4" floppies
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
In my day men were men, women were women, and a microVAX was as personal as a computer got.
|
|
|
|
|
Gary R. Wheeler wrote: ...and a microVAX...
Is this the laptop?[^]
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Close enough!
Actually, the microVAX I used was mounted in a rack cabinet with a 300MB disk drive that was three times the size of the computer. IIRC we had 4MB of RAM in the machine. We routinely had a dozen users on it, most of whom were doing development on a simulation written in Ada.
|
|
|
|
|
Hello,
Can anyone please point me to the right direction as to how (if at all possible) to add menu items to the Flash context menu by using C/C++ only (which means no .NET no Action Script)?
I would imagine OLE should be involved but how?
Thank you in advance
Alberto Bar-Noy
Project Manager
http://www.consist.co.il
|
|
|
|
|
Hello everyone,
Here is my more simplified case to show virtual function is missing in vtable. In class Goo, function myFunc is missing in vtable, but in class Zoo, it is ok to contain virtual function zoo_func.
class Foo {
virtual int func1() = 0;
virtual int func2() = 0;
virtual int func3() {return 0;}
};
class Goo: Foo {
public:
virtual int func1() {return 0;}
virtual int func2() {return 0;}
virtual int myFunc() {return 1;}
};
class Zoo {
public:
virtual int zoo_func() {return 0;}
};
int main()
{
Goo g;
Zoo z;
return 0;
}
thanks in advance,
George
|
|
|
|
|
Really?
On my system Goo & Zoo VTABLE
s are quite similar.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
modified on Sunday, February 03, 2008 5:05:00 AM
|
|
|
|
|
What I mean is function "myFunc" is not in vtable. What is the content of the vtable in debugger?
regards,
George
|
|
|
|
|
Actually I was wrong, and you were right. Maybe I was too drunk yesterday...
Ignore my previous post.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|
|
It is ok, CPallini!
Looks like a bug in Visual Studio debugger that the whole vtable can not be displayed.
regards,
George
|
|
|
|
|
Well I don't know and probably needs further investigation. Probably it is a debugger issue but I don't think its is a bug.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|