I just figured it out...
Thankyou guys for your inputs!
Also off the subject, I was just wondering if you guys ever ran into a
flickering problem!
If I may ask! Can you take a quick look at this code:
===========================================================
case WM_CREATE:
//Create brushes with particular default color
hBrush_hdMW_OtherControls = CreateSolidBrush(GetSysColor(COLOR_GRAYTEXT));
hBrush_hdMW_staticLab = CreateSolidBrush(GetSysColor(COLOR_BTNHIGHLIGHT));
hBrush_hdMW_staticIMV = CreateSolidBrush(RGB(100,100,100));
case WM_CTLCOLORSTATIC:
//Get the control ID
i = GetWindowLong((HWND)lParam,GWL_ID);
if (i >= 100 && i <= 105)
//Memory variable labels
{
SetTextColor((HDC)wParam,RGB(0,0,0));
//Set the back color to the same color that is behind the control or
atleast I think it does????
SetBkColor((HDC)wParam,GetSysColor(COLOR_BTNHIGHLIGHT));
return (LRESULT) hBrush_hdMW_staticLab;
}
//Internal Memory variables
else if(i >=500 && i <= 505)
{
SetTextColor((HDC)wParam,RGB(0,0,0));
SetBkColor((HDC)wParam,RGB(255,255,0)); //Set the back color to particular
color
//Return the brush to color whole field of static control
return (LRESULT) hBrush_hdMW_staticIMV;
}
else
//The rest of the controls
{
SetTextColor((HDC)wParam,RGB(200,0,100));
SetBkColor((HDC)wParam,RGB(255,255,0));
return (LRESULT) hBrush_hdMW_OtherControls; //If I remove this line, these
controls don't get colored at all.
}
return 0; //break; //Also in the book example this line is a break. Isn't
it supposed to be a return? Just asking!
...other code.....
=================================================================
The code above causes flickering on the client area!
Do keep in mind that I am designing a real time system and therefore a
WM_TIMER event is executed every 150 milliseconds.!!!!! I don't know if
this has something to do with the flickering as, if I remove the code in
the WM_CTLCOLORSTATIC handler, the flickering goes away.
But also I seem to have some text control coloring difficulty. In some of
the controls, I would like that the full area of the background color of
the control to be fully collored(at times as default white or at other
times to a particular color). So to accomplish this, would I have to
return the brush as done so in the WM_CTLCOLORSTATIC handler.
Am I complicating things... wouldn't I just be able to set the text and
background colors for the controls *once* in WM_CREATE? If so, then would
the:
return (LRESULT) hBrush_hdMW_OtherControls;
line work in WM_CREATE? I don't think so. You see, I am looking at
Colors1.c from petzold's example and he needs constant repainting of the
static text controls and therefore I guess that's why he uses the
WM_CTLCOLORSTATIC handler. But I just need to do some innitial background
and text coloring of controls.
I did try to put the following code in WM_CREATE before the CreateWindow
commands, but the background color of the control defaults to a sort of
beige color, which is not what I wanted!
Also, the following code fragment makes sence in the WM_CTLCOLORSTATIC
handler, but not in WM_CREATE:
======================================================================
hBrush_hdMW_staticLab = CreateSolidBrush(GetSysColor(COLOR_BTNHIGHLIGHT));
SelectObject(hdc,hBrush_hdMW_staticLab);
SetTextColor((HDC)wParam,RGB(0,0,0));
//Set the back color to the same color that is behind the control
SetBkColor((HDC)wParam,RGB(255,255,255));
return (LRESULT) hBrush_hdMW_staticLab;
======================================================================
Basically to fully color the background of a control with a specific color
(not just color the backgroung behind the text of the control), do I have
the use of the following line:
return (LRESULT) hBrush_hdMW_OtherControls;
and the following handler with the WM_CTLCOLORSTATIC handler as shown at
the innitial code of this post?
Thanking you all in advance!
Regards!
Roberto
"Abdo Haji-Ali" <ahali@inframez.org_use_com_instead> wrote in message
news:ulccoz8hGHA.4892@TK2MSFTNGP02.phx.gbl...
"Robby" <Robby@discussions.microsoft.com> wrote in message
news:A73C1741-1C43-4C25-B65D-EEB97935FD88@microsoft.com...
Hello,
Without using STL, I find myself in the need to convert a TCHAR to an
integer.
ex: "5" to 5
You can do something like this:
int iNum = cChar - '0';
Of course, other specialized functions (like atoi() ) are better to
use...
--
Abdo Haji-Ali
Programmer
In|Framez