|
s v joshi wrote: At a time only one process is allowed to execute since
That implies a mutex - the running process owns the mutex, the others wait (using WaitForSingleObject, for example) for the mutex to become free.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Hi,
In an older (MSVC++6.0) project I used HideControl(edt1) to hide the filename edit control in a CFileDialog derrived class, which worked fine at the time.
When I compile this project with MSDEV2008, the code complies OK but control is no longer hidden.
Other controls that I have hidden appear to work OK, its just 'edt1' that wont go away!
Heres my code:
BOOL CFolderDialog::OnInitDialog()
{
CFileDialog::OnInitDialog();
GetParent()->;SetWindowText(_T("Select Folder"));
SetControlText(IDOK, _T("OK"));
HideControl(stc2);
HideControl(stc3);
HideControl(cmb1);
HideControl(edt1);
return TRUE;
}
Anyone else come across this?
TIA
Tony
|
|
|
|
|
Using Spy++ on a sample application I just built, it would seem that instead of edt1, you now want to use cmb13 (0x47c). I guess they decided that as that field is (now) actually a combo-box, that would be a better ID to use.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Thanks for this - it works a treat.
I wish I had thought of using Spy++!
Tony
|
|
|
|
|
Weeeeell, I don;t actually know the answer, but my first idea would be to use Spy++ and see what the ID numbers of the various controls you want to hide are. Any any child windows of other child windows?
Having done that, search for the numerical values of (stc3m stc2, edt1), and see if they match up with results from Spy++.
If all but edt1 match up, then you know the idea is right - then just use the right ID number.
Good luck,
Iain.
Edit:
Stuart has done the work for you, being a nice chappy. But if you follow my email, you can work it out yourself for learning purposes.
I have now moved to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), or need cotract work done, give me a job! http://cv.imcsoft.co.uk/[ ^]
|
|
|
|
|
Hi,
I don't know if this the right place for my problem, but I hope somebody can help me.
I encountered the strange behavior of my OnUpdate function in Cview. I have my own class derived from CView that onUpdate loads the selected data from document and displays them. I am selecting the data using treeControl so whenever I select an item in the tree I set some data from the document to be selected and call UpdateAllViews (so my view calls OnUpdate function).
The problem is that my view displays the data selected in the previous step (set by previously clicked treeitem) and not the actual. But when I place a breakpoint in the OnUpdate function every thing works fine.
I found on google somebody having the similar problem but without any answer.
Thank you very much for your reply
|
|
|
|
|
Could it be that your views simply don't get redrawn? If you put the breakpoint in your code and hit it that will bring Visual Studio's window to top and then if you let your code run (hit F5) it will bring your application's window on screen again which will trigger a redraw and you see your changes, however, without the breakpoint the redraw does not take place so you don't see any change. Try running your app without the breakpoint, select something in your tree and then try "ALT-TABbing" to VS (so VS will cover your window) and then back to your app to trigger a redraw, if then you see what you are suposed to see and not the previous state then you are probably just missing a redraw after the update. Good luck.
> 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. <
|
|
|
|
|
You were right,
I feel ashamed I didn't figured it out by myself. I called wrong function for redrawing the view.
Thank you
|
|
|
|
|
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.
|
|
|
|