how to display time in place of MY TIME

Light Poster
21Jan2010,23:52   #1
palz's Avatar
i have used OnNcPaint to diplay text init using the following code.

Code:
      void CMainWnd::OnNcPaint( )
       {
             HDC dc = GetWindowDC()->m_hDC;
             RECT rectWnd = {800,4,880,23};
             FillRect(dc, &rectWnd, (HBRUSH)GetStockObject(DKGRAY_BRUSH));
             SetBkMode(dc, TRANSPARENT);
             SetTextColor(dc, RGB(255, 0,0));
              DrawText(dc, "MY TIME", strlen("My TIME"), &rectWnd, 0);
             ::ReleaseDC(m_hWnd,dc);
        }
and used timer to show the time in any active window using the following code

Code:
          void CMainWnd::OnTimer(UINT_PTR nIDEvent)
           {
                 HWND hWnd;
                 hWnd = ::GetForegroundWindow();
                 CWnd *pWnd;
                 pWnd = CWnd::FromHandle(hWnd);
                 CTime Time = CTime::GetCurrentTime();
                 CString strTime=Time.Format("%H:%M:%S");
                 pWnd->SetWindowText(strTime);
           }
the problem is i want to place the updated time(IN TIMER) in the place of "MY TIME" .
HOW TO DO THAT.
i am unable to integrate them both.
PLZ HELP ME.
Go4Expert Founder
22Jan2010,08:15   #2
shabbir's Avatar
In the class CMainWnd Define the member variable CString strTime and assigning it in OnTimer will update it and NCPaint will Display it.

Remember there can be painting issue of the Non-Client Window
Light Poster
22Jan2010,09:01   #3
palz's Avatar
there are painting issues as u said. how to solve them.is there any simple method

can i use DrawText to display upadated time.

my require output is towards rightside of window.
[img]D:\modified1[/img]

plz help