|
Why do you need to do this?
Anyway, you could have app A configured to start on boot and have it create a hidden window which hangs around waiting for WM_ENDSESSION [^] to arrive and then starts process B when "lParam" is zero for that message.
Be aware that starting a process during shutdown is typically tricky and may even be prevented by the OS. You could, alternatively do your stuff in the WM_ENDSESSION handler of process A itself.
--
gleat
http://blogorama.nerdworks.in[ ^]
-- Once we figured out that taking our shoes and socks off would double our counting ability the technical glitch was quickly rectified. -- Chris Maunder, from the CP newsletter
|
|
|
|
|
hi...
how to run our application in windows services?
can anyone help me?
thanks.
paulraj
|
|
|
|
|
|
I have to create windows services...
paulraj
|
|
|
|
|
|
A():names(2){}
What's that for? When using vector, you don't declare the size. It's a dynamic sizing array...
Anyhow, it would be helpful for you to explain what differences you see.
(And who the heck gave me a 1 vote?)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br />
Peter Weyzen<br />
Staff Engineer<br />
<a href="http://www.soonr.com">SoonR Inc -- PC Power delivered to your phone</a>
|
|
|
|
|
There is a constructor that will create a vector with N elements. Apparently it doesn't "construct" each element in the traditional sense though.
- S
50 cups of coffee and you know it's on!
|
|
|
|
|
Peter Weyzen wrote: When using vector, you don't declare the size.
Yes, you can. See here[^] (search for "vector(size_type n)".)
Steve
|
|
|
|
|
|
There is no problem! See here[^].
Steve
|
|
|
|
|
Best I can tell from MSDN the constructor is calling uninitialized_fill_n a few levels down.
The remarks in MSDN say: This algorithm allows the decoupling of memory allocation from object construction.
Could be there way of saying it does a deep copy of one instance of an object and replicates it N times, which would explain the behavior your experiencing.
- S
50 cups of coffee and you know it's on!
|
|
|
|
|
|
See Stephen's response below. Basically your object is created once, then copied multiple times. Seems like kind of odd behavior to me....
- S
50 cups of coffee and you know it's on!
|
|
|
|
|
That's an interesting question! See if this code helps answer it.
#include <iostream>
#include <vector>
#include <stdlib.h>
using namespace std;
class Foo {
private:
int num;
public:
Foo() {
num = rand();
cout<<"Foo::Foo() - num = "<<num<<endl;
}
explicit Foo(const Foo& f) {
num = f.num;
cout<<"Foo::Foo(const Foo&) - num = "<<num<<endl;
}
const Foo& operator=(const Foo& f) {
cout<<"Foo::operator=()"<<endl;
num = f.num;
return *this;
}
int getnum() {
return num;
}
};
int main() {
vector<Foo> v(5);
cout<<"size = "<<v.size()<<endl;
cout<<"capacity = "<<v.capacity()<<endl;
vector<Foo>::iterator it = v.begin();
while( it != v.end() )
cout<<(*it++).getnum()<<endl;
return 0;
} This is the output I get on VC++ 2008:
Foo::Foo() - num = 41
Foo::Foo(const Foo&) - num = 41
Foo::Foo(const Foo&) - num = 41
Foo::Foo(const Foo&) - num = 41
Foo::Foo(const Foo&) - num = 41
Foo::Foo(const Foo&) - num = 41
size = 5
capacity = 5
41
41
41
41
41 As you can see, the copy constructor gets called 5 times! So the compiler first creates a temporary "Foo" instance and then copies it 5 times.
--
gleat
http://blogorama.nerdworks.in[ ^]
-- Once we figured out that taking our shoes and socks off would double our counting ability the technical glitch was quickly rectified. -- Chris Maunder, from the CP newsletter
|
|
|
|
|
There is no bug, you just aren't logging enough! Try this code:
#include "stdafx.h"
#include <iostream>
#include <vector>
using namespace std;
class Log
{
public:
Log()
{
cout << "Log()" << endl;
}
Log(const Log ©_me)
{
cout << "Log(const Log ©_me)" << endl;
}
~Log() { cout << "~Log()" << endl; }
};
int main()
{
vector<Log> g_Log(10);
return 0;
}
The output is:
Log()
Log(const Log ©_me)
Log(const Log ©_me)
Log(const Log ©_me)
Log(const Log ©_me)
Log(const Log ©_me)
Log(const Log ©_me)
Log(const Log ©_me)
Log(const Log ©_me)
Log(const Log ©_me)
Log(const Log ©_me)
~Log()
~Log()
~Log()
~Log()
~Log()
~Log()
~Log()
~Log()
~Log()
~Log()
~Log()
Looks like a reference element is created using the default constructor and the copy constructor is used to construct the actual vector 's elements by copying the reference element.
Steve
modified on Thursday, April 3, 2008 12:23 AM
|
|
|
|
|
|
Your mistake was assuming that the default constructor is used to construct the vector 's contents. My example showed that the copy-constructor is used instead. As I said, there is no problem: your vector does contain 2 fully constructed elements, it's just that you didn't put any logging code in the copy-constructor.
Steve
|
|
|
|
|
That's what I was starting to think. Thanks! (C# is destroying my brain!!)
- S
50 cups of coffee and you know it's on!
|
|
|
|
|
I haven't experienced the pleasure/pain (I’ll leave the choice up to the reader's discretion) of using C# yet.
Steve
|
|
|
|
|
You're a lucky man!
You just think differently (or rather don't have to think) about things in c#. After a year long break from c++, I looked at the stl vector class and it looked foreign and assembly like. That scares the crap out me! Gotta get back to my roots, back to the metal, before I become akin to a VB developer (not that there's anything wrong with that )
- S
50 cups of coffee and you know it's on!
|
|
|
|
|
i have a dialog box which can be resized...
now this can be resized only by dragging the bottom right side... is is possible?
i believe that there are three possibilities.one is to drag sideways another one is to drag downwards (if we do either of the above methods the video will be stretched) and the other one is to use the bottom right part...(i should be able to do only this so the aspect ratio of the video is not lost.
requirement is that the video should look stretched. how do i do this?
|
|
|
|
|
|
yes its on a control.. i am using directshow for this..
|
|
|
|
|
first of all if you see Mediaplayer the main window can be sized anyway, but the video window adjust to keep the aspect ratio of the video. So adjust the display of video than the dialog box, because size and aspect ratio varies for each video.
Chandrasekharanp wrote: now this can be resized only by dragging the bottom right side... is is possible?
you can prevent changing the size only in one dimension by overriding WM_SIZING, i cannot thing of any other advanced tricks.
Chandrasekharanp wrote: i believe that there are three possibilities.
There are more possibilities, WM_SIZING[^]
void CYourDlg::OnSizing(UINT fwSide, LPRECT pRect)
{
CDialog::OnSizing(fwSide, pRect);
if (fwSide != WMSZ_BOTTOMLEFT &&
fwSide != WMSZ_BOTTOMRIGHT &&
fwSide != WMSZ_TOPLEFT &&
fwSide != WMSZ_TOPRIGHT )
{
RECT rc;
GetWindowRect(&rc);
*pRect = rc;
}
}
|
|
|
|
|
i am using directshow here. and i have seen in media player that the aspect ratio does not change when u drag the window.. do we have an option in direct show to set the aspect ratio. there is one option available
<br />
[ nAspectRatio = ] MSWebDVD.AspectRatio <br />
i actually dint understand what this is.. i guess u have some knowledge on direct show.
|
|
|
|