|
Dear all,
I have a situation like this. For my application i have a bit map, and i wat to set this bitmap cursor in some area of my GUI. the bit map to be set as the cursor is not the original one from the resource, before that i want to rotate the bitmap according to some events like mouse scroll event, ok i can make it rotate the bitmap using the code,HBITMAP CRotateimageDlg::GetRotatedBitmapNT(HBITMAP hBitmap, float radians, COLORREF clrBack)
{
// Create a memory DC compatible with the display
CDC sourceDC, destDC;
sourceDC.CreateCompatibleDC( NULL );
destDC.CreateCompatibleDC( NULL );
// Get logical coordinates
BITMAP bm;
::GetObject( hBitmap, sizeof( bm ), &bm );
float cosine = (float)cos(radians);
float sine = (float)sin(radians);
// Compute dimensions of the resulting bitmap
// First get the coordinates of the 3 corners other than origin
int x1 = (int)(bm.bmHeight * sine);
int y1 = (int)(bm.bmHeight * cosine);
int x2 = (int)(bm.bmWidth * cosine + bm.bmHeight * sine);
int y2 = (int)(bm.bmHeight * cosine - bm.bmWidth * sine);
int x3 = (int)(bm.bmWidth * cosine);
int y3 = (int)(-bm.bmWidth * sine);
int minx = min(0,min(x1, min(x2,x3)));
int miny = min(0,min(y1, min(y2,y3)));
int maxx = max(0,max(x1, max(x2,x3)));
int maxy = max(0,max(y1, max(y2,y3)));
int w = maxx - minx;
int h = maxy - miny;
// Create a bitmap to hold the result
HBITMAP hbmResult = ::CreateCompatibleBitmap(CClientDC(NULL), w, h);
HBITMAP hbmOldSource = (HBITMAP)::SelectObject( sourceDC.m_hDC, hBitmap );
HBITMAP hbmOldDest = (HBITMAP)::SelectObject( destDC.m_hDC, hbmResult );
// Draw the background color before we change mapping mode
HBRUSH hbrBack = CreateSolidBrush( clrBack );
HBRUSH hbrOld = (HBRUSH)::SelectObject( destDC.m_hDC, hbrBack );
destDC.PatBlt( 0, 0, w, h, PATCOPY );
::DeleteObject( ::SelectObject( destDC.m_hDC, hbrOld ) );
// We will use world transform to rotate the bitmap
SetGraphicsMode(destDC.m_hDC, GM_ADVANCED);
XFORM xform;
xform.eM11 = cosine;
xform.eM12 = -sine;
xform.eM21 = sine;
xform.eM22 = cosine;
xform.eDx = (float)-minx;
xform.eDy = (float)-miny;
SetWorldTransform( destDC.m_hDC, &xform );
// Now do the actual rotating - a pixel at a time
destDC.BitBlt(0,0,bm.bmWidth, bm.bmHeight, &sourceDC, 0, 0, SRCCOPY );
// Restore DCs
::SelectObject( sourceDC.m_hDC, hbmOldSource );
::SelectObject( destDC.m_hDC, hbmOldDest );
return hbmResult;
} and can load it in to the image control, but my require ment is another one, how can i load the returned HBITMAP as a cursor?? pls get me if anybody has the idea, or if u have the code snipet pls let me know..
Thanks in advance.
AnuragVelekkattu
|
|
|
|
|
Hi all, what can i use in WTL for handling time/date information?, ibe been using the good old SYSTEMTIME struct till now, but now i have to do some time calculations, and its a real pain to do all the convert to FILETIME, etc, etc. stuff just to substract a date from another one!
Should i....
1.- Write my own WTL MFC-CTime equivalent class?
2.- Use COleDateTime? (can i do this without having to link to MFC libs?)
3.- Is there a wonderfull time/date handling class for WTL that i dont know about?
Thanks!
|
|
|
|
|
You could try the Boost date/time libraries...[^] You'd probably have to write functions to get to/from native Windows types, though.
Stuart Dootson
'Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p'
|
|
|
|
|
You could consider converting to OLE Date/Time format without COleDateTime, using SystemTimeToVariantTime, which lets you then do subtraction for date/time differences. The integer part of the result is the number of days difference, and you can use VariantTimeToSystemTime to make extracting hh:mm:ss information simpler.
Steve S
|
|
|
|
|
Thanks Steve & Stuart, i decided to write my own time classes so from now on i never have time-troubles again so i wrote CWTime & CElapsedTime
and they seem to work sweet so far.
Thanks for your answers!
|
|
|
|
|
If you are lucky enough to get VS.NET, then you can use the classic MFC CTime class - it is now a shared ATL/MFC class (along with CString and others).
When I am king, you will be first against the wall.
|
|
|
|
|
Hi and thanks for your answer, i do have VS.NET, but about 1 month after buying it, i uninstalled it and went back to 6.0. why?
because quite simply, IT SUCKS!
(please note that i dont start a never ending devate on .net, this is my OWN PERSONAL OPINION, im shure many people find .net lovely)
NE way, i allready wrote a pair of time classes for wtl, sort of a "port" of the MFC´s CTime & CTimeSpan classes (ill be glad to share them with anyone interested), and they work just fine.
Cheers!
|
|
|
|
|
I know the VS.NET IDE sucks AND blows but you're missing out on ATL7 which is an excellent set of classes...
The Rob Blog
|
|
|
|
|
and even better with WTL7 installed, despite the 'glitches' that stop it being easy to install for VS.NET 2003.
Why don't MS realise what a success story WTL is, and make it an official part of the product? Is it that they're afraid no-one will use MFC, or is it self-preservation on the part of the author who realises that MS control freaks will kill the product?
Steve S
|
|
|
|
|
I think microsoft doesnt support wtl for one reason, They dont have to! or in other words, it wont make them any more money(and thats all they care about), they know that 90% of people will continue to use the arcane, buggy, and overcomplicated MFC libs even if they dont like it because its (sadly) become the "standard" for writting windows apps, and since its what "most people use", even the people that hate MFC (like me), are sometimes FORCED to use it, i had a customer (a systems manager for a hotel in my city) that told me exacly this: "if you dont do it on MFC, then i dont want it", when i asked her why, her answer was sadly true: "because if you do it on wtl, W32, or whatever, i will have a hard time finding some one to maintain it, but if you do it on MFC, then finding someone that knows/uses MFC is not a problem".
I think that microsoft should make WTL open source, its (in my opinion) a GREAT library that should continue to get supported, documented, etc.
|
|
|
|
|
|
Agreed, too few update to MFC/ATL and the IDE now mix-up with .nut, which make C/C++ more complicated as before.
|
|
|
|
|
|
Roger Stewart
"I Owe, I Owe, it's off to work I go..."
|
|
|
|
|
or in English;
"Can anyone tell me where I can download a free e-book on ATL development"
is my guess.
Steve S
|
|
|
|
|
Please tell me : How do ocx control by ATL in vs.net2003?
顺便问一下:这有中国的吗?我的英文不太好,用中文好交流!有的话: rqxiang@hotmail.com
|
|
|
|
|
When i am using it in ActiveX control, it is doing some odd stuff like on SetPos it doesnt show progress bar in right possition, quite frankly on first call it sets it to 2/3 and it stays there... anyone knows why and how to fix it (and I do know how to use progress bar ctrl )
|
|
|
|
|
According instruction, I try to install WTL 7.0 step by step. The wizard icon appears in the new/project dialog, but when I create a new project, it said: Object with program ID VsWizard.VsWizardEngine can not be created. Why? Could you help me? Thank you.
|
|
|
|
|
The WTL 7.0 Wizard isn't immediately compatible with VS.NET 2003 (there's some registry key differences). However, it can be fixed See this[^]
Stuart Dootson
'Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p'
|
|
|
|
|
Ah! Thank you! I found out about this little problem earlier today.
--
Im hayu samim et hamo'ach shelcha betoch tsipor, hi hayta matchila la'uf achora!
|
|
|
|
|
Considering a vector could grow, is it wise to make vectors (and other STL containers) part of a class definition?
If it's OK, is there a way to do it safely?
Thanks.
William
Fortes in fide et opere!
|
|
|
|
|
You mean as members of a class??? Yes, it's safe - they manage space allocated on the heap, not in the class itself (i.e. the vector object just contains a pointer to it's contents).
Stuart Dootson
'Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p'
|
|
|
|
|
Thanks for replying, and thanks for the reassurance.
I was beginning to suspect a program I'm currently working with, was causing all the problems I was experiencing from it because of the vectors (of strings) that were defined in one of its classes. The vectors were growing by leaps and bounds and I was suspecting the extra memory they were using, were encroaching in other territories.
William
Fortes in fide et opere!
|
|
|
|
|
Why do you think that a vector growing is a bad thing?
Best regards,
Alexandru Savescu
P.S. Interested in art? Visit this!
|
|
|
|
|
Hi Dears
I've created an Exchange 2000 Store Event Sink in Visual C++ using
______________________________________________________
http://support.microsoft.com/default.aspx?scid=kb;en-us;288156
------------------------------------------------------
I've also created a COM+ Event Sink Application usin
________________________________________________________
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wss/wss/wsst_create_a_com_event_sink_application.asp
--------------------------------------------------------
Now I have to register my "Event Sink"
There is some guidance on thr URL
___________________________________________________
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wss/wss/wsst_registering_an_event_sink.asp
---------------------------------------------------
But I think it's for Visual Basic not for Visual C++ implementation
Please help me...................
I'll be very grateful to you.
Kind Regards
Atif
Watch Your Thoughts for they will become your actions.
Watch Your Actions for they will become your habits.
Watch Your Habits for they will become your beliefs.
Watch Your Beliefs for they will determine your destiny.
|
|
|
|
|