|
Hi, changing the global setting like the computer's current time zone is a bad thing, because it can affect other programs and lead to some even serious problems. Problem is that the timezone is a setting for all programs running under the user profile - if some program relies on the time, it can be wrong in that time (especially if it doesn't handle correctly change of the timezone in runtime)
If you know the correct time offsets, you can use the COleDateTimeSpan , it should work - but you have to convert it twice as the GMT+/- offsets are relative to the GMT - so if you have e-mail from Japan (+9) you have to subtract 9 from the time and you'll get the GMT. Then you have to add offset of your timezone (or use any function that returns local time from the UTC/GMT time) to get the local time.
|
|
|
|
|
We have a subclass of CToolbar and we are using the 'LoadToolBar()' method to create the buttons etc. for the bar from a bitmap image.
My question is, how can I use my own button subclass, instead of CButton for the actual toolbar buttons? In fact, I would like to be able to 'mix' the button objects: CButton, CBUtton, MyButton, CButton etc. within the same toolbar.
My apologies if this has been answered here before in the last 2 months.
Tim
|
|
|
|
|
actually, the second requirement can be dropped. I can separate the buttons in to different toolbars.
|
|
|
|
|
The toolbar control is a single window. There are (by default) no child controls created. What look like buttons are drawn (and the behavior controlled) by the toolbar control itself - no relation to pushbuttons, radiobuttons, etc.
So... You can subclss CToolBarCtrl , and do funky stuff there if you like, or use your own icons and the custom draw API to change appearance. I'm gonna caution you from the outset though - toolbars are a huge, huge annoyance to do custom work with. Don't expect to get some fancy new deviation from the norm implemented and working in an afternoon unless you either buy/borrow the code, or have gobs of experience with the control already. IMHO, it probably has the worst design and implementation of any of the common controls, and each new version of Windows (or IE) brings a new pile of ugly hacks to the mix.
You must be careful in the forest
Broken glass and rusty nails
If you're to bring back something for us
I have bullets for sale...
|
|
|
|
|
Shog9 wrote:
The toolbar control is a single window. There are (by default) no child controls created. What look like buttons are drawn (and the behavior controlled) by the toolbar control itself - no relation to pushbuttons, radiobuttons, etc
This is what I was looking for. That explains everything.
Shog9 wrote:
I'm gonna caution you from the outset
Thanks for the advice. Now that you mention this, I seem to remember hearing this, or something similiar in the past.
Thanks for you help.
Tim
|
|
|
|
|
Hi everybody. This is the most frustrating issue I've ever come across since I'm working with Visual C++. I made this DLL and I'm trying to send a WM_SETTEXT message from it to a VB application but the VB Application never receives the message!! If I send WM_SETTEXT from another VB application to my main VB application, it works. If I send WM_SETTEXT from the application itself to it, it works. I subclassed the window of the VB application so that I can take a look at all messages that go through.
If I send WM_USER from VC++ to VB, it works. If I send WM_SETTEXT from VC++ to VB, it doesn't. What COULD BE GOING ON THERE??????????? I'm totally confused and I don't understand why such a simple thing doesn't work! I tried all sorts of variants but NOTHING works!!!!!
SendMessage(hwndToTheSubclassedVBWindow, WM_SETTEXT, NULL, *"Annoying\0");
SendMessage(hwndToTheSubclassedVBWindow, WM_SETTEXT, NULL, *"Annoying");
<br />
char *c = "";<br />
c = (char*)malloc(256);<br />
c = "This is annoying";<br />
SendMessage(hwndToTheSubclassedVBWindow, WM_SETTEXT, NULL, *c);<br />
Before you say anything. The hwndToTheSubclassedVBWindow is CORRECT. I checked it 100 times.
WM_SETTEXT annoyance table:
same VB -> VB -> works
other VB -> VB -> works
C++ -> VB -> doesn't work
WM_USER annoyance table:
same VB -> VB -> works
other VB -> VB -> works
C++ -> VB -> -> works
Now. If *ANYBODY* has a clue about this, he/she has a gold medal from me! 'Cause I asked in other 2 or 3 forums and nobody knows anything.
-= E C H Y S T T A S =-
The Greater Mind Balance
|
|
|
|
|
Axonn Echysttas wrote:
...but the VB Application never receives the message!!
How are you verifying this?
Axonn Echysttas wrote:
char *c = "";
c = (char*)malloc(256);
c = "This is annoying";
SendMessage(hwndToTheSubclassedVBWindow, WM_SETTEXT, NULL, *c);
How about:
char *c = (char *) malloc(256);
strcpy(c, "This is annoying");
SendMessage(hwndToTheSubclassedVBWindow, WM_SETTEXT, NULL, (LPARAM) c);
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
Hi David. First things first: I was verifying using my using my own WindowProc that I subclassed from the VB Application. The VB Application had in its own code in a module my WindowProc and I had a message box there to notify me when I get WM_SETTEXT messages. ALSO, I used Spy++ as a last line of defense in case my code was wrong. But my code was ok.
Second things second:
*SHOCKED*
*laugh*
*applause*
You did it!! : D. I can't beleive it!!! You did it! I knew it! This WAS a VC++ issue.
I am sorry, but I am still a beginner in VC++. I jumped directly in Hooking, subclassing instead of starting with the basics. David, you really deserve a gold medal, thanks a lot. This was a huge issue. Now I'm one more step closer to success. Remember me : D. I'll soon finish my freeware software and you'll be in the "thanks to" list, like all the other people from the Code Project and other places that helped me.
I'm very happy that this issue is fixed, but still... WHAT *WAS* my mistake?? Why didn't the messasge get sent?? Was it because I didn't cast to LPARAM? Was it because I... can you explain how you fixed this so easily?
Thanks you VERY much! Wow am I happy to get this out of my hair or what! Pfiu! This issue killed my day and my last night.
Axonn out, going to sleep, it's late and tomorrow I gotta keep pushing ahead. I gotta go to work and when I'll be back home I'll keep working at my freeware soft : D. I can't wait to finish it so I can present it to all you people. This is the first internet place where I'll make it public : ).
-= E C H Y S T T A S =-
The Greater Mind Balance
|
|
|
|
|
Axonn Echysttas wrote:
Was it because I didn't cast to LPARAM?
Yep. The message was expecting the address of a string. You were passing the value of the first character of the string. These are not the same.
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
Now I understand why sometimes when I was sending a WM_USER message with some text parameters, in Visual Basic I grabbed an "84" from those parameters. Probably it sent the ASCII code of the first leter in the string.
Hm. Well, don't worry. I learned a lot these past two days.
Thanks a lot to all of you : ). I may finally continue work.
-= E C H Y S T T A S =-
The Greater Mind Balance
|
|
|
|
|
I want to create a bitmap that has text on it. The text will be different everytime the program is executed. The bitmap will then be set as the wallpaper in Windows. I am working with Visual C++ 6. I have found various guides online but none of them seem to work for me. I've been playing around with CBitmaps, GDI, and DCs but I have become completely lost. Can anyone show me a complete example of how to put text into a bitmap and save it?
|
|
|
|
|
See if this article helps.
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
This is very helpful but where did u get the value of pDC from?
|
|
|
|
|
It's passed to the view's OnDraw() method.
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
I want to take the real part from a decimal number for example if i have 3,13 take only the 3. I remenber that there is something to do it but i dont remenber yet Thanks
|
|
|
|
|
#include <math.h>
int nFloor = (int)floor(3.13);
Pssst. You see that little light on your monitor? That's actually a government installed spy camera. Smile and wave to big brother!
|
|
|
|
|
Try:
double d = 3.13;
int n = d;
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
Of course at this point you should have already realized that what you want is not the "real" part of a number but the integer...
someone suggested
double d = 3.13;
int n = d;
this will actually produce a warning regarding possible loss of data. Try instead
double d = 3.13;<br />
int n = int(d);
|
|
|
|
|
From MSDN:
double modf(
double x,
double *intptr
);
Splits a floating-point value into fractional and integer parts.
This function returns the signed fractional portion of x. There is no error return.
x : Floating-point value.
intptr : Pointer to stored integer portion.
The modf function breaks down the floating-point value x into fractional and integer parts, each of which has the same sign as x. The signed fractional portion of x is returned. The integer portion is stored as a floating-point value at intptr.
...cmk
Save the whales - collect the whole set
|
|
|
|
|
Hi
I am trying to develop a new CButton sub-class that has the following behaviour:
- when the user clicks and holds the button, and event is fired
- when the user releases the button, another, different event fires.
In other words, I want to know when they press (and hold) the button and I want to know when they release the button.
With CButton, I only get 1 event: a WM_COMMAND when the button is released.
Any help would be appreciated. Thanks.
Tim
|
|
|
|
|
See here and here for examples.
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
thanks very much for your quick reply. That should be enough information.
|
|
|
|
|
What is the difference between CSocket and WinSock.
Be FaithFull To Your Work.
|
|
|
|
|
42, of course.
(Smells like homework).
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
The latter is an API, while the former is a class that encapsulates this API.
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|