|
Hello, I'm trying to create a virtual desktop manager and I need a way to capture a screen shot of all the desktops.
To do this I use a code that capture the screen shot of the desktop in which it is launched but if the desktop is not the input desktop the image captured is just a black rectangle.
To avoid the problem I made my program switch to the desktop to be captured and back. Obviously the result is not really beautiful (the image is ok, but windows has to switch to a different desktop for a couple of seconds each virtual desktop!!!)
Can enyone tell me how can I take a screen schot of the non-input desktops without switching to them first?
I hope it's not too confusing and theks in advance for your help
|
|
|
|
|
Just out of curiosity, did you try using PrintWindow[^] or WM_PRINT[^] by any chanche? Did these also fail?
> The problem with computers is that they do what you tell them to do and not what you want them to do. <
> Life: great graphics, but the gameplay sux. <
|
|
|
|
|
I am looking for some help to create a random name generator with ASCII. I am new to C++ and really and not 100% sure how to attack this. "First and last names should be randomly generated and must begin with a capital letter. Additionally, the first letter should be a consonant. The remainder of the name should alternate between vowels and consonants, where every even numbered letter is a vowel and every odd numbered letter is a consonant." Any help would be GREAT!!.
|
|
|
|
|
Looks like homework. What is your trouble about?
Hint: create two arrays (for consonants and vowels).
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.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
How do you go about randomly assigning alternating vowels and consonants? I have created arrays for each but can not determine the way to alternate them. Yes it is homework I am looking for answers fast. Due tonight! I also have to create "x" number of random names and store them in an array called "first". I also have to do it for last, but once i can get the first to work then the last name should be identical with some minor changes. thanks for you response by the way. i have not been able to get anything from anyone, especially my prof.
|
|
|
|
|
Chuck Vought wrote: How do you go about randomly assigning alternating vowels and consonants? I have created arrays for each but can not determine the way to alternate them.
That's simple, Stuart already provided the way, see [^]. The idea is:
the index of a loop takes alternatively even and odd values, you should choose a consonant whenever the loop index is even (a vowel whenever it is odd). To test for evenness (or oddness) use the modulus operator % this way: (i%2) (it returns 0 whenever i is even and 1 whenever i is odd).
As about assigning names to an array, what is your doubt?
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.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
I guess i am looking for a source file that works and can test. I am in a crunch to get this done. I know I am wrong for asking for a .cpp file that works, but at this point I am at wits end with trying to get this done by tonight. Thanks for all your assitance. I will try my best at figuring it out.
|
|
|
|
|
|
Chuck Vought wrote: const int index = (int)((double)rand()/(RAND_MAX+1) * sizeof(consonant));
You could change that with:
const int index = rand() % sizeof(consonants);
There is sufficient light for those who desire to see, and there is sufficient darkness for those of a contrary disposition.
Blaise Pascal
|
|
|
|
|
an alternative to using (i % 2 == 0) for even, you can do (i & 0x1) for odd.
So if your code was like this:
for(UINT i = 0; i < 100; ++i)
{
if(i % 2 == 0)
{
}
else
{
}
}
You can instead do this:
for(UINT i = 0; i < 100; ++i)
{
if(i & 0x1)
{
}
else
{
}
}
|
|
|
|
|
Yes, it is faster.
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.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
The way I'd approach it is like this:
1. Define functions that return random voewls and random consonants - here's a random vowel function:
char RandomVowel()
{
const char vowels[] = {'a', 'e', 'i', 'o', 'u'};
const int index = (int)((double)rand()/(RAND_MAX+1) * sizeof(vowels));
return vowels[index];
}
2. Build up a string using alternating calls to the random vowel and consonant functions - note that I've remembered about the upper case first character!
std::string name;
name += (char)toupper(RandomConsonant());
for(int i=1;i<desired-name-length;++i)
{
if (i%2==1)
name += RandomVowel();
else
name += RandomConsonant();
}
Obviously the desired name length should be chosen at random as well!
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Here's my try:
#include <string>
using namespace std;
int main(int argc, char* argv[])
{
string name;
static const int namelen = 15;
static const char* letters[2] = { "bcdfghjklmnpqrstvwxyz", "aeiouy" };
static const letterlen[2] = { strlen(letters[0]), strlen(letters[1]) };
for (int i=0; i<namelen; i++)
name += letters[i%2][rand()%letterlen[i%2]];
name[0] = toupper(name[0]);
return 0;
}
There is sufficient light for those who desire to see, and there is sufficient darkness for those of a contrary disposition.
Blaise Pascal
|
|
|
|
|
I understand somewhat the code you provided, but how can I loop it to make it create say 20 different names and store them and later output them to the display?
|
|
|
|
|
this what i have and it works, but how do i loop it so that i can generate the number of names that the user inputs?
for (int i=0; i<numFirst; i++)
{
firstname += letters[i%2][rand()%letterlength[i%2]];
firstname[0] = toupper(firstname[0]);
}
for (int i=0; i<numLast; i++)
{
lastname += letters[i%2][rand()%letterlength[i%2]];
lastname[0] = toupper(lastname[0]);
}
|
|
|
|
|
Chuck Vought wrote: ...how do i loop it so that i can generate the number of names that the user inputs?
Put those two for() loops inside of another loop.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
wont that just continue to overwrite the last names created? i need to loop them and then be able to store each name in an array to pass to a print function. any idea on how that would look? thanks for the response.
|
|
|
|
|
Chuck Vought wrote: wont that just continue to overwrite the last names created?
Of course. You'd need to turn firstname and lastname into an array of strings.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
How do I create the array fo strings and how would I set the cout statement to read each array? Are array strings treated the same as arrays? can you show me an example of how to create one?
thanks
|
|
|
|
|
Chuck Vought wrote: How do I create the array fo strings...
Option 1:
string firstname[20]; Option 2:
vector<string> firstname;
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
now is firstname[20] the number of character is 20 or is that the number of different names that will be put into the array? i have never done anything with vectors so option 1 looks better.
so when i set my cout statement to display each firstname would firstname[0] be name1, firstname[1] be name 2 , etc.
|
|
|
|
|
Chuck Vought wrote: ...or is that the number of different names that will be put into the array?
Yes.
Chuck Vought wrote: i have never done anything with vectors so option 1 looks better.
But it is limited to 20 .
Chuck Vought wrote: so when i set my cout statement to display each firstname would firstname[0] be name1, firstname[1] be name 2 , etc.
Yes.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
can i change it to 67 as my example shows? to any number i choose?
|
|
|
|
|
Below is what i am trying to do. Does it appear that i am oon the right track anyways.
You can use either a character array or a string to create each first and last name, however, each first and last name must then be stored in an array of names once it has been created. You can use a single array to store both the first and last name, or a single array for each first name and another array for each last name; this is up to you.
Once you have created the array(s) of names, pass it (them) to a function called print_names that prints out 3 names per line to the screen.
example: 67 names with a 5 letter first name and 8 letter last name
|
|
|
|
|
Chuck Vought wrote: Below is what i am trying to do. Does it appear that i am oon the right track anyways.
Assuming your code matches, yes.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|