|
You would either add a handler for OnCtlColor or make the button Owner Draw.
Also look at:
http://www.codeproject.com/staticctrl/coloredit_colorstatic.asp
http://www.codeproject.com/staticctrl/clabel.asp
Instead of using an Anonymous post you might like to Register here at CP which makes us CP regulars happier.
Neville Franks, Author of ED for Windows. www.getsoft.com
|
|
|
|
|
Neville Franks wrote:
Instead of using an Anonymous post you might like to Register here at CP which makes us CP regulars happier.
The bad thing about anonymous posts is that you dont get mail notifications
Nish
Regards,
Nish
Native CPian.
Born and brought up on CP.
With the CP blood in him.
|
|
|
|
|
I wish to capture keystrokes much like hot keys.
Instead of setting up buttons with captions like
&0Zero, &1One, ... &9Nine.
I would like to be able to capture keystrokes like
ALT 0, ... ALT 9.
I guess the PreTranslate() is the right place to do this.
My question is how do I tell that both the ALT key is down when the 0 key was pressed?
Please point me in the right direction.
Thanks
|
|
|
|
|
|
Michael Dunn wrote:
If your app is SDI or MDI, just create accelerators for those keystrokes.
Adding to what Mike said. If it a dialog based APP, you can read this article which shows how to have accelerator keys working in a dialog based app :-
http://www.codeproject.com/useritems/pretransdialog01.asp
Nish
Regards,
Nish
Native CPian.
Born and brought up on CP.
With the CP blood in him.
|
|
|
|
|
For the life of me I can't remember how to do this... I am creating my own file format for a hobby application I'm working on and I am trying to remember how to store a 'C' constant string in an integer variable.
I have a dummy header for now defined as:
<br />
struct Header {<br />
int Identity;
int Version;
};<br />
I then proceed to store info but when I try to store SAM1 it doesn't seem to store everything. I'm just a little confused and don't remember how to do this, any help would be greatly appreciated. Or, any other method you suggest to store a string in the header file would be appreciated as well.
Thanks in advance.
Sam
----
"No special sig just plain old Sam..."
|
|
|
|
|
If the storage of id is limited in 4 letters, this way would do:
struct Header {
int Identity;
int Version;
};
Header hh;
memcpy(&hh.Identity, "SAM1", 4);
But I don't think int a good choice for the case...
Maxwell Chen
People say "No news is good news". Then, no code is good code!?
|
|
|
|
|
Thanks for the heads up I would of never guessed that even after seeing the answer I don't remember that What would you suggest be the best use?
Thanks.
Sam
----
"No special sig just plain old Sam..."
|
|
|
|
|
From all the other source, mostly the source for the MD2 file format stores this type of information int an 'integer' variable.
Originally I would suggest you to use char array, but after having seen your answer to Michael, I couldn't imagine any other methods.
Maxwell Chen
People say "No news is good news". Then, no code is good code!?
|
|
|
|
|
I don't get it. Why would you want to store a string in an integer? You could only store a pointer to character array, which would be meaningless when read back in?
What's wrong with a good old char[4]?
Michael
Communication is the first step towards enlightenment.
|
|
|
|
|
I don't know. I am writing a 3D application and have the file format. From all the other source, mostly the source for the MD2 file format stores this type of information int an 'integer' variable. I myself do not know why John C uses an int and not char[4] or char[5] if accomadating for the '\0'.
Sam
----
"No special sig just plain old Sam..."
|
|
|
|
|
It's highly dangerous to do this. You are relying on an int being 32 bits, which it isn't necessaryily. What if MS changed int to a 64bit in a future release? you're app would not load data correctly most probably.
Signature space for rent. Apply Within.
|
|
|
|
|
Actually this is a good point. Or, you can typedef or explicitly define an int being 32 bits. But this is something I think John C would have thought of I wonder why he used this as an ID value?!?! I'm puzzled.
Sam
----
"No special sig just plain old Sam..."
|
|
|
|
|
Hi,
I'm trying to add a new string value under an existing registry key. I see the APIs to delete , enum and set a value but I just can't figure out how to add a NEW string value under an EXISTing key.
Please help.
Thanks!
This is what i've tied but it creates a KEY and not a VALUE under "Info"
if(RegOpenKeyEx(
HKEY_LOCAL_MACHINE,
"SOFTWARE\\BFW\\SampleTool\\Info",
0,
KEY_ALL_ACCESS,
&hkey
)==ERROR_SUCCESS)
{
if(RegSetValue(hkey,"Info",REG_SZ,"Test",5)==ERROR_SUCCESS)
I'd like to see Test appear as a REG_SZ under the Info Key.
|
|
|
|
|
|
RegSetValueEx(hkey,"Test",0,REG_SZ, NULL,NULL)
Did the trick.
Thanks.
|
|
|
|
|
Hi,
This will solve your problem.
unsigned long ValueSize = 10; // you can use also sizeof ( long ) or anything you need.
if ( RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\BFW\\SampleTool\\Info , 0, KEY_READ|KEY_SET_VALUE, &hKey) != ERROR_SUCCESS )
{
// error message.
return;
}
RegSetValueEx(hKey,"Info",NULL,REG_SZ,(unsigned char*)5,ValueSize);
Aizik Yair
Software Engineer
|
|
|
|
|
I was wondering anyone can help me out on how best to design the following:
I have a piece of code which is HIGH PRIORITY. This must be ran at a set timing interval (say 20ms- or at least close to it). It will be doind data acquisition and then putting all this in a buffer.
The GUI end will update the screen and variables that the above code retrieves at another rate (say every 1 sec). This thread will read the buffer and then do calc and then maybe graph it.
Now, I was thinking that the first piece of coe should be in a HIGH Priority thread.
Originally, I was thinking that I do a timer that will read the Buffer and also update the screen. However, I was thinking that during the intervals, there may also be lots of idle time, which can be used. I want the program to also data acq and if there is nothing going on (no timer either) to check and read the buffer. I was thinking aboput using the onidle.
Is this the best way to do what I would like? I want to EVEN out the tasks and time spent in the GUI thread without doing it only when the timer is called at certain intervals. Is there an effective way to do this?
Thanks in advance.
|
|
|
|
|
You can never guarantee that your thread will run at an exact interval, or that it will even run. That's preemptive multitasking - the OS can switch away from your thread at any time, when its time slice is up or if a higher-priority thread needs CPU time. If you need exact control over CPU time, Win32 isn't the right OS.
--Mike--
Buy me stuff! (Link fixed now)
Like the Google toolbar? Then check out UltraBar, with more features & customizable search engines!
My really out-of-date homepage
Big fan of Alyson Hannigan and Jamie Salé.
Sonork - 100.10414 AcidHelm
|
|
|
|
|
The best approach would be to have your worker thread sitting at a WaitForSingleObject() with the object being a CEvent or some such. Whenever data was available it would signal the event and the thread would grab the data. The thread function could set a flag to let the GUI know that new data was available. The GUI could check this in OnIdle, however you shouldn't do any lengthing processing there. It could just PostMessage() to the MainFrm telling it to do whataver.
Neville Franks, Author of ED for Windows. www.getsoft.com
|
|
|
|
|
I think I understand what you are asking for, so I'll take a shot at it.
First off, let me ask. Can you use IO Completion ports? If you only have to run on NT,2K+ and what data you are waiting for is socket related this might be the best solution for you. You would basically guarantee that your worker thread only runs when there is data regardless of if it is less than or greater than 20ms.
If that's not an option. You could use 2 worker threads to achieve what you are asking for. The first thread would be a higer prirotity thread using WaitForXXXObject with a set maximum time. It would execute your worker code every XX MS. (Note: as stated before, Windows doesn't guarantee a high level of precision in timing functions.) The second worker thread would be the lowest possible prirotity and would do the same thing the first thread does, except it would use Sleep(0) instead of WaitForXXXObject to release its timeslice before calling your worker code. Obviously, your worker code (not the thread which calls it, the actual code block) might need to be protected against multi-thread access using a CRITICAL_SECTION or whatever.
Just my 2 cents.
Matt Gullett
|
|
|
|
|
I understand what everyone is thinking. Well, Win OS is good enough for my purposes. Why I believe I need a high priority thread first is that I need to call a fucntion to acquire data from a card every so ...
For the most part, I have tried a little of what I thought up an dit works BUT it only reacts when a timer is called to read from the buffer that the high priority thread puts data to. The High priority thread has a sleep call at the moment.
The comment by Matt about the second thread doing a sleep to release timeslices confuses me a bit. What I am getting from it is that the worker high priority thread will be run whenever. Then when the lower priority thread is called (because nothing else happening) it will sleep and call the worker thread func. If there was no this lower priority thread, wouldn't it still work the same way?
In another comment, it was mentioned taht I coul dsend a message from my OnIdle func to my Main program to do the task of reading from the buffer. This sounds good. But I was wondering if it would then end up sending TOO many messages because I thought OnIdle is called often.
Thanks for the comments. Does anyone have any other comments on what I said above? I am really trying to figure out a way to do thing better!
|
|
|
|
|
Grr Ive just about had enough of Visual B*$£%y studio. Okay heres my problem ive written a program that runs buetifully in Debug and i mean buetifully not a single error when runnign it 100's of times etc.
Soon as i switch to release i get it just crashing or errors popping up saying some function failed. Okay one of teh biggest ones is CryptAcquireContext() fails with invalid parameter well hwo the hell can that be when the parameter is valid in debug. All i can think of is something is screwing up the memory where this is loaded has anyone got any ideas.
Peter
P.S Surely if something was screwing this memory area up it would be picked up in debud as an Assert failure?
|
|
|
|
|
Peter Liddle wrote:
well hwo the hell can that be when the parameter is valid in debug.
Two words: uninitialized variables
Check out John Newcomer's article here at CP about debug vs. release problems.
--Mike--
Buy me stuff! (Link fixed now)
Like the Google toolbar? Then check out UltraBar, with more features & customizable search engines!
My really out-of-date homepage
Big fan of Alyson Hannigan and Jamie Salé.
Sonork - 100.10414 AcidHelm
|
|
|
|
|
set your compiler's warning level to 4. this will catch a lot of stuff. (project / settings / C/C++ )
-c
There ain't no second chance
Against the thing with the forty eyes
|
|
|
|