|
thanks!
no need for the file in this case, but which VC6 Service Pack is installed?
(You can look in the registry HKEY_LOCAL_MACHINE\Software\Microsoft\Visual Studio\6.0\Service Packs\, the "latest" value)
I never really know a killer from a savior boost your code || Fold With Us! || sighist | doxygen
|
|
|
|
|
No Service Pack installed. It is just plain Visual C++ 6.0
Found on Bash.org
I'm going to become rich and famous after i invent a device that allows you to stab people in the face over the internet
My Articles
|
|
|
|
|
|
I get only a warning at the first "Release" build:
--------------------Configuration: RelBugRepro - Win32 Release--------------------
Compiling...
RelBugRepro.cpp
Linking...
LINK : warning LNK4089: all references to "OLEAUT32.dll" discarded by /OPT:REF
RelBugRepro.exe - 0 error(s), 1 warning(s)
When running both builds, the behaviors are the ones you espect.
peterchen wrote:
If you have VC6 SP 1..4,
Ooops! I wasn't careful enough, I use VC6 SP5
Fold With Us!
Sie wollen mein Herz am rechten Fleck
Doch seh ich dann nach unten weg
Da schlägt es links
|
|
|
|
|
Yeah, the release build failed here too. It seems to be a problem with the optimiser reusing registers. The ESI register is being clobbered in the UpdateEditDuplicate() method just before the call to GetItem() (well, it is here, anyway). You can get around the problem by making GetSomeID() non-inlined or passing an address to the GUID rather than returning the structure. Not sure about passing the GUID by address to GetItem(), but that would probably fix it also.
If you send me a reply, I can email you the listing file if you like.
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
My dissassembly matched your expected pattern. Although in my case, the register was not cleared to zero, but was set using the high-order dword of the GUID structure returned by GetSomeID() since it was inlined.
Funnily enough, in my case, the extra block was not needed and made no difference; neither did the rand() call - I could remove either one and still have the same error.
It appears here as though the problem is in the initialisation of the itParent object. At warning level 4, the compiler complains about being unable to inline the constructors, and on investigation, there are 8 bytes unaccounted for on the stack at the end of the function call (which would be equal to the two parameters to the two constructors called). I made the parameters to the constructors constant references rather than values, and this fixed the problem, as did making another constructor for CFinalPtr that took an IUnknownPtr argument, so only one constructor was called. I've noticed before that the compiler has trouble with copy constructors that take structures by value.
[edit]Disregard that. Used the wrong file [/edit]
Just noticed something... You're passing a CPtrWrap as an argument to the only CPtrWrap constructor that expects a IUnknownPtr. I'm not sure that's a valid construct, since CPtrWrap is derived from IUnknownPtr, and you're passing it by value, not by reference. If the constructor expected a reference or pointer there wouldn't be a problem. To be honest, I'm surprised the compiler doesn't warn about it. Certainly, if CPtrWrap had any data members of its own or virtual functions that weren't in IUnknownPtr, I'd expect it to totally screw up; basically if the size of two were different. Have a look at this, because I think it may have something to do with the problem.
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
well the basic structure is:
struct B : public A
{
B(A a) : A(a) {}
};
struct C : public B
{
C(B b) : B(b) {}
};
(the classes have no additional members)
I use no reference, to allow the classes to re-use half-a-dozen overloaded constructors.
I never really know a killer from a savior boost your code || Fold With Us! || sighist | doxygen
|
|
|
|
|
Could you please check which SP is installed at yours?
Listing file would be interesting only if it passes.
The original code is quite a bit more complex, and while I can work around this in this one place, I have probably thousands of others wit h a similar structure. The version posted is the "most brittle" one - changing a single thing will fix it.
But from the isolation process I have dozens of iterations that show the same bug in more comple code. (that's the frightening part) It seems to be triggered by rgister starvation for local/temp variables, a function with many parameters, and the killer is always moving an assignment (mov REG, esp) to far up.
I never really know a killer from a savior boost your code || Fold With Us! || sighist | doxygen
|
|
|
|
|
peterchen wrote:
Could you please check which SP is installed at yours?
Oh, it's SP5. I thought I only had SP4 I must have installed it without letting myself know
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
I want to modify/customise the icon of EXE files programatically
For this purpose, I made use of LoadResource, FindResource, UpdateResource and other helper functions.
But, could not achieve the desired result!
Has anyone done such work?, do let me know!.
NK
|
|
|
|
|
There's no easy way to do this! I think your best shot it is to surgically change the bytes of data within the EXE. This will be no mean feat, but there's an article recently published that demonstrates how to surgically read the data - http://www.codeproject.com/useritems/GetIconsfromExeorDLLs.asp[^] - you may be able to adapt the teqnique to modify the images.
Joel Holdsworth
"Outlook not so good"
That magic 8-ball knows everything! I'll ask about Exchange Server next
|
|
|
|
|
Thanks for the reply!
Yeah...I went through the article and also the code!
Found some useful utilities(ResourceHacker) as well on the NET. This tool has an option to change the icon. But after changing the icon, it was not reflected on my windows explorer. I had to copy and paste the file to see the new updated icon. Presently, I am using this tool to debug what my program is updating in the resource file. As you rightly put it, its not an easy task!.
|
|
|
|
|
I want to change the title bar color of application,
there is an API "SystemParametersInfo" that can do that, but
It changes the color of title bars of all applications, where as I want to change only the color of my application's titlebar.
I know that painting non-client area we can do it, but there are numerous dialogs in application, painting in each of them is difficult, due to some reasons I avoid this technique.
Is there a more simple solution?
Please Help?
|
|
|
|
|
pc_dev wrote:
I know that painting non-client area we can do it, but there are numerous dialogs in application, painting in each of them is difficult, due to some reasons I avoid this technique.
Is there a more simple solution?
non-client painting is the way to do it. Just create a base class for all your dialog that will take care of that, and just pass a color to each dialog.
On the other hand, maybe skinning can do that, but it is still the same thing, painting the non-client area.
Maximilien Lincourt
Your Head A Splode - Strong Bad
|
|
|
|
|
This article covers that topic
Custom captions[^]
If you vote me down, my score will only get lower
|
|
|
|
|
Hi
When I create an "out-of-the-box" MDI application with the project wizard (using Visual C++ .NET 2003) with a CView as child (so every setting in the wizard is left on default) then the OnMove() function fires only twice - at the start of the application.
<br />
void CTestOnMoveView::OnMove(int x, int y)<br />
{<br />
TRACE("CTestOnMoveView::OnMove (%d/%d)\n", x, y);<br />
CView::OnMove(x, y);<br />
}<br />
...results in...
<br />
CTestOnMoveView::OnMove (0/0)<br />
CTestOnMoveView::OnMove (2/2)<br />
Afterwards OnMove() is never called again, no matter how I move, resize, maximize and minimize the application window and/or the child window. Only if I close the document/childwindow and make a new one ("File"->"New") then OnMove() is called again twice, then no more afterwards.
Sorry, I just don't get it
OnResize() on the other hand works 100% as expected, firing every time the size of the window is someway changed.
Any help welcome,
thanks,
T.T.H. / Matthias
|
|
|
|
|
That is because the View never moves...
The view window is actually a child window of your CChildFrame (from CMDIChildWnd),
and (almost) always sits at (0,0).
When you drag the "View" about, you are actually dragging the frame about. The view
sits still relative to its parent window.
When you resize the "View", you actually resize the frame. The frame resizes the View,
which is why you get WM_SIZE messages!
If you really need to know that you've moved, move your functionality into CChildFrame.
The child frame can be useful, as you can (e.g) toolbars to each frame, instead of
just having the main ones.
Hopefully that made sense!
Iain.
|
|
|
|
|
My question is I have a Dialog Form. If I move the mouse on the form , ToolTipText should appear with a message "mouse is on the move".
The section of the block is given below
void CDialogBackGroundDlg::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CDialog::OnMouseMove(nFlags, point);
}
How will code the block for the OnMouseMove with ToolTipText facility?
Can anyone please help me regarding this matter.
Philip
|
|
|
|
|
i want to get ethernet card(RS-232 serial)'s ip address & MAC address.
|
|
|
|
|
Use following
for IP
"gethostbyname" it returns pointer to "hostent structure" which contains IP
for MAC address
"GetAdaptersInfo"
|
|
|
|
|
can i get my ethernet card information?
how to use GetAdaptersInfo function.
i have already get local pc computer ip address and mac address.but this is only for computer.
i don't know,how i can get other device ip address(may be printer,fax,bar code reader) in my network.
can i get device information..???
please , explain me...
|
|
|
|
|
vc-programmer- wrote:
how to use GetAdaptersInfo function.
See here.
vc-programmer- wrote:
i don't know,how i can get other device ip address(may be printer,fax,bar code reader) in my network.
One way, if you know the name, would be with gethostbyname() .
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
Hello,
For years I was using a methodology described in Ellemtel Code Conventions and Rules[^], but lately I had a discussion with a collegue about the order of #include files on a C/C++ source file.
The header files contain:
- All header files contain a technique for preventing multiple inclusion
- All modules contain a public header file for providing prototypes and other dirty stuff towards the world. (most of the cases all the modules contain a pair of files: header and implementation)
- Some modules have also a private header file.
- Any header file can contain preprocessor stuff, type definitions, global variables. and function prototypes
What is the order you think these include files should appear on any implementation file? (pick them out of the list below)
- Group A: System header files(
#include <....> ) - Group B: Public header file for the file.
- Group C: Private header file for the module if any.
- Group D: Other header files from your code.
In your oppinion, what is the correct include order? (Based on your experience/knowledge)
I
-- Ricky Marek (AKA: rbid)
-- "Things are only impossible until they are not" --- Jean-Luc Picard
|
|
|
|
|
Typically (for me), it would be...
#include "stdafx.h"
#include <afxtempl.h>
#include <string>
etc.
#include <Utilities.h>
#include <<a href = "http://www.codeproject.com/buttonctrl/LedButton.asp">LedButton.h</a>[<a href = "http://www.codeproject.com/buttonctrl/LedButton.asp" target = "_blank">^</a>]>
#include <ThisDll.h>
#include "ThisClass.h"
#include "resource.h"
I make sure headers files I've written come after "system" ones, to make sure I
don't mess up any defines, etc. In practise, it matters very rarely. But it has
mattered in the past, so I try to be good!
Iain.
|
|
|
|
|
Hi
Although is not strictly what you are asking it may be a usefull information.
Order usually matters when a header file is not well written. This means that either it does not contain required definitions (thus relies on a accidental inclusion of another header file above to be completed) or two headers contain the same definition and when they are both included may produce problems. Thus, despite the chosen order a good advice is to write your private headers carefully.
Personaly when I write them I follow the following style: Assyme that I write a header called myheder.h. It would be in the style
// A unique symbol to protect my code
#ifndef MY_APP_MY_HEADER_H
#define MY_APP_MY_HEADER_H 1
..... include headers required for that header file
.... write here the actual header code
#endif /* MY_APP_MY_HEADER_H */
Headers written this way are guaranteed to be included once and be self contain. Their inclusion then is order independant.
|
|
|
|