|
Suppose I have class, what would be better - using references to deliver message between the member functions or declare the delivered objects as data members of the class?
class bla{
public:
...
private:
Worker w;
};
OR
void func1() {
...
func2(w);
...
}
void func2(Worker& w) {
...
}
-----------------------
But what did I do?
|
|
|
|
|
There is no one correct answer to this. In your first case, class bla actually owns the Worker object, and so this is apropriate if it is part of an aggregation relationship. The second case is appropriate where you do not own the object, but need to operate on it. Of course, if most of the class methods need a reference to the Worker object, you could declare a reference, not an object, inside the bla class.
If you can be more specific about what you are doing i might be able to give a more specific answer.
Dave
|
|
|
|
|
Thank You Dave.
There is no "specific problem". I was just wondering
What you said seems very legitimate to me. In fact, I suspected this should be the consideration I should take. Do you have any idea if there is any difference in performance?
Thanks again
-----------------------
But what did I do?
|
|
|
|
|
There is a difference in performance, but the vast majority of the time it is irrelevant. Member functions actually have a hidden first parameter, which is the 'this' pointer. To access a member variable, they must retrieve the value at the address which is a known offset from this pointer.
If the variable is passed in as a parameter, it can be accessed more directly, because it is at a known address on the stack (or rather a known address relative to the current top of the stack). On most architectures, this will mean that accessing a member variable will take 1 instruction more than accessing a parameter - fairly inconsequential.
Dave
|
|
|
|
|
I need to make an analyzer of heads of methods in Visual C++, that is given a head of a method in a CString of the following way:
BOOL FichControl::CopyFile( const char *lpSrcFilename, const char *lpDestFilename, int nBuffersize )
I need to obtain each SubString that conforms the head (BOOL, FichControl, CopyFile, const char, *lpSrcFilename, ...)
Exists some form to do this, that is not crossing the CString of principle to aim character to character?
Thank you very much!
PD: Sorry for my bad English.
|
|
|
|
|
I think, you can construct some regular expression to handle such a string parsing.
RegExp is a thingie, where you describe the format of string, it's parts etc. Then it can check if the supplied string matches the specified format, and the library is also able to parse the string for you to parts you specify. It allows you to specify optional parts of string (class specification e.g. FileControl:: ) and repeating (parameters - there can be zero or X parameters)
for some examples of regular expressions, you can look to: http://www.regexlib.com/[^]
There are a lot of available regexp libraries - in ATL7 is one, the class is named I guess CAtlRegExp or something like that. The boost library also provides some regular expression code.
Later on, when you will be happy with the construct, there are some tools around 'compiling' the regexp expression to the plain C (you will get some speedup)
hope this helps
|
|
|
|
|
How can a VB program pass an array of string by reference to a C DLL for updating and then return back to VB.
Most grateful if there is sample coding.
|
|
|
|
|
Hello,
i work with CHtmlView in MDI project and i want to stop Popup window, so i do :
void CBrowserMDIView::OnNewWindow2(LPDISPATCH* ppDisp, BOOL* Cancel)<br />
{<br />
<br />
*Cancel = true;<br />
}
but with this code i block all new window, if the user click on link which open a new window, it is stoped by *Cancel = true; .
So how can i distinguish if OnNewWindow2 is called via script or by click ??
PS: excuse my poor english
|
|
|
|
|
I don't know if OnBeforeNavigate2() is called for popup windows, but if it is you can do the cancel there based on the lpszURL param.
Neville Franks, Author of ED for Windows. www.getsoft.com
Make money with our new Affilate program
|
|
|
|
|
Neville Franks wrote:
I don't know if OnBeforeNavigate2() is called for popup windows, but if it is you can do the cancel there based on the lpszURL param.
thx !
ok but how know if it is a desired popup (click on link) or a ad popup ?
could you more explain please
|
|
|
|
|
jeremysay wrote:
thx !
ok but how know if it is a desired popup (click on link) or a ad popup ?
could you more explain please
I can't help with that, other than to suggest you analyze the contents of the URL and make some decision based on that. Or ask the user.
Neville Franks, Author of ED for Windows. www.getsoft.com
Make money with our new Affilate program
|
|
|
|
|
I have a application with a view that has a tabctrl. The tabpages of this tabctrl are CDialog derived objects. There a several dll's that draw controls on these tabpages (I didn't think this up, my predecessor did ).
Anyhow, the problem is that some of the controls do not receive their messages. E.g. button controls do not receive BN_CLICKED, the same account for spinctrl's. But I can edit the fields of a editctrl. Also when I create an ownerdraw button the WM_DRAWITEM message can not be received.
When I create a similar control in the application itself then this control does receive it's messages. My predecessor create a 'sollution' by overriding the OnCommand of the TabCtrl. This does solve the BN_CLICKED problem but still I do not receive the ownerdraw messages. Anyone got a clue about how to solve this?
|
|
|
|
|
There's a OnDrawItem command. Maybe if you override that one you will receive ownerdraw messages. I never use MFC though so I'm not sure about this
|
|
|
|
|
That does not work if the control does not receive it's messages.
|
|
|
|
|
Hi
think this is a bit difficult
i got the control-id passed through a function
with parameters: (UINT CtrlId)
but in that function i want to know the membername attached to that control.
Anyone knows?
Greetz
Jens
|
|
|
|
|
never mind
i fixed my problem by using:
GetDlgItem(Ctrlid)
|
|
|
|
|
I placed one Media Player Control on a Dialogue using VC++6. However, during a movie playback, the Media Player will face problem while it plays under FULL SCREEN mode.
I could not figure it out? Anybody can help?
Now I am thinking to block any keyboard input while playback in progress. Any comments?
DJ
|
|
|
|
|
Dear all:
i want to write a program to suspend system to s1 and s2, but i can't find the api, i uses
SetSystemPowerState(1, 0) ---> suspend to s3
SetSystemPowerState(0, 0) ----> suspend to s4
but how can i suspend system to s1 and s2 ?
thx for ur help
|
|
|
|
|
Is there a way to get VS 6.0 (VC++) to recognize *.cc as a C++ file? I am required to use this extension for work. As it is now, it doesn't use syntax highlighting or any of the other nifty stuff.
Thanks,
Jack
There are 10 types of people in this world, those that understand binary and those who don't.
|
|
|
|
|
|
How to change the background image of the desktop window? Or is there an article I can read about it? Thanks!
|
|
|
|
|
Search MSDN for IActiveDesktop interface, it has got methods which help you change the background of Desktop.
<edit> I was assuming you where asking about changing desktop background image, if you want to paint your apps window with images, then you
can override OnDraw if its a CView based app. to start with </edit>
Cheers,
Kannan
|
|
|
|
|
Have a look at SystemParametersInfo and the SPI_SETDESKWALLPAPER parameter.
Gary Kirkham
A working Program is one that has only unobserved bugs
I thought I wanted a career, turns out I just wanted paychecks
|
|
|
|
|
How to open HTML Help file from my MFC application at a specified location - let's say not at the beginning but at 'contacts & credits'(the last) page?
|
|
|
|
|
i have created test_build.dll, xxx.h, xxx.def.
next i created testexe to try calling functions inside that dll.
but this testexe does not compile - error msg about
unresolved external symbol...
indicating it could not 'see' those functions inside the dll.
question - what settings on this testexe project i need to set/un_set for it to work?
|
|
|
|