// Dlg_ToolBar.cpp : 实现文件 // #include "stdafx.h" #include "Dlg_ToolBar.h" #include "Global.h" #include ".\dlg_toolbar.h" //#include "ScriptSetDlg.h" #include "DlgEditPwd.h" #include "SystemParaSetDlg.h" #include "MainFrm.h" // CDlg_ToolBar 对话框 IMPLEMENT_DYNAMIC(CDlg_ToolBar, CDialog) CDlg_ToolBar::CDlg_ToolBar(CWnd* pParent /*=NULL*/) : CDialog(CDlg_ToolBar::IDD, pParent) { } CDlg_ToolBar::~CDlg_ToolBar() { } void CDlg_ToolBar::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_STA_CLOCK, m_clock); } BEGIN_MESSAGE_MAP(CDlg_ToolBar, CDialog) ON_WM_PAINT() ON_WM_MOUSEMOVE() ON_WM_LBUTTONDOWN() ON_WM_LBUTTONUP() ON_WM_TIMER() END_MESSAGE_MAP() // CDlg_ToolBar 消息处理程序 BOOL CDlg_ToolBar::OnInitDialog() { CDialog::OnInitDialog(); // TODO: 在此添加额外的初始化 char picDir[_MAX_PATH] = {0}; strcpy(picDir, g_strDirectory); strcat(picDir, "\\"); strcat(picDir, _BITMAPDIR); strcat(picDir, "topbar.bmp" ); DisplayBMP( 0,0,1920,79,picDir,false ); int screenx=GetSystemMetrics(SM_CXSCREEN); int screeny=GetSystemMetrics(SM_CYSCREEN); GetDlgItem(IDC_STA_CLOCK)->MoveWindow( CRect(screenx-120,5,screenx,30) ); CTime time=CTime::GetCurrentTime(); int nHour=time.GetHour(); int nMinute=time.GetMinute(); int nSecond=time.GetSecond(); m_clock.SetBkColor(RGB(9,52,86));//7,58,103 m_clock.SetTextColor(RGB(0,255,0)); m_clock.SetClock(nHour,nMinute,nSecond); SetTimer( 1,100,NULL ); return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } void CDlg_ToolBar::SetPos( int iWidth,int iHeight ) { CRect rc1; rc1.left = 0; rc1.right = rc1.left+1920; rc1.top = 0; rc1.bottom = rc1.top+iHeight; this->MoveWindow( rc1 ); CRect rc2; rc2.left = 0; rc2.right = 1920; rc2.top = 0; rc2.bottom = 79; GetDlgItem(IDC_STATIC1)->MoveWindow( rc2 ); //_rtClient = rc1; _rtClient.left = 7; _rtClient.top = 52; _rtClient.right = 825; _rtClient.bottom = 79; //CRect rc3; //rc3.left = 0; //rc3.right = iWidth; //rc3.top = 85; //rc3.bottom = 120; //GetDlgItem(IDC_STATIC2)->MoveWindow( rc3 ); } void CDlg_ToolBar::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: 在此处添加消息处理程序代码 // 不为绘图消息调用 CDialog::OnPaint() char picDir[_MAX_PATH] = {0}; strcpy(picDir, g_strDirectory); strcat(picDir, "\\"); strcat(picDir, _BITMAPDIR); strcat(picDir, "topbar.bmp" ); DisplayBMP( 0,0,1920,79,picDir,false );//DisplayBMP( 0,0,2400,106,picDir,false ); } BOOL CDlg_ToolBar::DisplayBMP( int nX1,int nY1,int nXX,int nYY,CString strBMPFile,BOOL bStretch ) { #if 0 CClientDC dc( this ); GdiplusStartupInput m_gdiplusStartupInput; // ULONG_PTR m_pGdiToken; wchar_t m_wstrServerName[255] ; MultiByteToWideChar(CP_ACP,0,strBMPFile,-1,m_wstrServerName,256); Graphics graphics( dc ); //wchar_t * p=strJPGFile.AllocSysStrinig(); Image image( m_wstrServerName, FALSE) ; //if(bStretch) //{ // StretchBlt(hDC,nX1,nY1,nXX,nYY,hMemDC,0,0,Width,Height,SRCCOPY); //} //else //{ // Width = min(Width,nXX); // Height = min(Height,nYY); // BitBlt(hDC,nX1,nY1,Width,Height,hMemDC,0,0,SRCCOPY); //} if(bStretch) { graphics.DrawImage( &image, nX1,nY1,nXX,nYY ); } else { WORD Width = (WORD)image.GetWidth(); WORD Height = (WORD)image.GetHeight(); //Width = min(Width,nXX); //Height = min(Height,nYY); //graphics.DrawImage( &image, nX1,nY1,Width,Height ); graphics.DrawImage( &image, nX1,nY1,0,0,nXX,nYY,UnitPixel ); } return true; #else CClientDC dc( this ); OFSTRUCT of; unsigned fh = OpenFile ((char const*)strBMPFile, &of, OF_READ); if(fh==-1) return FALSE; DWORD size = (DWORD)(sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD)); HANDLE hDIBInfo = GlobalAlloc(GMEM_MOVEABLE,size); SetStretchBltMode(dc,HALFTONE); BITMAPFILEHEADER bf; LPBITMAPINFOHEADER lpbi; lpbi = (LPBITMAPINFOHEADER)GlobalLock(hDIBInfo); _lread(fh,(LPSTR)&bf,sizeof (bf)); _lread(fh,(LPSTR)lpbi,sizeof(BITMAPINFOHEADER)); WORD nClrs = (WORD)lpbi->biClrUsed; size = ((((lpbi->biWidth*lpbi->biBitCount)+31)&~31)>>3)*lpbi->biHeight; if(nClrs==0 && lpbi->biBitCount!=24) nClrs = 1<biBitCount; if(lpbi->biClrUsed == 0) lpbi->biClrUsed = (DWORD)nClrs; if(lpbi->biSizeImage == 0) lpbi->biSizeImage = size; WORD Size = (WORD)lpbi->biSize; WORD Width = (WORD)lpbi->biWidth; WORD Height = (WORD)lpbi->biHeight; WORD ClrUsed = (WORD)lpbi->biClrUsed; WORD BitCount = (WORD)lpbi->biBitCount; DWORD SizeImage = lpbi->biSizeImage; WORD SizeRGB = nClrs*sizeof(RGBQUAD); WORD SizeHeader = Size+SizeRGB; GlobalUnlock(hDIBInfo); hDIBInfo = GlobalReAlloc(hDIBInfo,SizeHeader+SizeImage, 0); lpbi = (LPBITMAPINFOHEADER)GlobalLock(hDIBInfo); _lread(fh,(LPSTR)(lpbi)+Size,SizeRGB); if(bf.bfOffBits!=0L) _llseek(fh,bf.bfOffBits,SEEK_SET); DWORD ul = SizeImage; BYTE *hp = (BYTE *)((LPSTR)lpbi + SizeHeader); while(ul>30000L) { _lread(fh,(LPSTR)hp,30000L); ul -= 30000L; hp += 30000L; } _lread(fh,(LPSTR)hp,(WORD)ul); _lclose(fh); HPALETTE hPalette,hOldPal; HANDLE hPalHeader = NULL; HDC hDC = dc.m_hDC; LPBITMAPINFOHEADER lpHeader = lpbi; WORD wDIBUse = DIB_RGB_COLORS; if(ClrUsed) { WORD size = sizeof(LOGPALETTE) + ClrUsed * sizeof(PALETTEENTRY); NPLOGPALETTE npPal = (NPLOGPALETTE)LocalAlloc(LMEM_FIXED,size); npPal->palVersion = 0x300; npPal->palNumEntries = ClrUsed; RGBQUAD FAR *lpRGB = (RGBQUAD FAR *)((LPSTR)lpbi + Size); for(WORD i=0;ipalPalEntry[i].peRed = lpRGB->rgbRed; npPal->palPalEntry[i].peGreen = lpRGB->rgbGreen; npPal->palPalEntry[i].peBlue = lpRGB->rgbBlue; npPal->palPalEntry[i].peFlags = 0; } hPalette = CreatePalette((LPLOGPALETTE)npPal); LocalFree((HANDLE)npPal); hOldPal = SelectPalette(hDC,hPalette,FALSE); RealizePalette(hDC); if(BitCount!=24) { size = Size+ClrUsed*sizeof(WORD); hPalHeader = GlobalAlloc(GMEM_MOVEABLE,size); LPBITMAPINFOHEADER lpPalInfo; lpPalInfo = (LPBITMAPINFOHEADER)GlobalLock(hPalHeader); *lpPalInfo = *lpbi; WORD FAR *lpTable = (WORD FAR *)((LPSTR)lpPalInfo + Size); for(WORD i=0;i LoadCursor(IDC_HANDCUR); ::SetCursor(hCursor); return; } CRect rect[10]; GetDlgItem(IDC_PIC1)->GetWindowRect( rect[0] ); ScreenToClient( &rect[0] ); GetDlgItem(IDC_PIC2)->GetWindowRect( rect[1] ); ScreenToClient( &rect[1] ); GetDlgItem(IDC_PIC3)->GetWindowRect( rect[2] ); ScreenToClient( &rect[2] ); GetDlgItem(IDC_PIC4)->GetWindowRect( rect[3] ); ScreenToClient( &rect[3] ); GetDlgItem(IDC_PIC5)->GetWindowRect( rect[4] ); ScreenToClient( &rect[4] ); GetDlgItem(IDC_PIC6)->GetWindowRect( rect[5] ); ScreenToClient( &rect[5] ); GetDlgItem(IDC_PIC7)->GetWindowRect( rect[6] ); ScreenToClient( &rect[6] ); GetDlgItem(IDC_PIC8)->GetWindowRect( rect[7] ); ScreenToClient( &rect[7] ); GetDlgItem(IDC_PIC9)->GetWindowRect( rect[8] ); ScreenToClient( &rect[8] ); GetDlgItem(IDC_PIC10)->GetWindowRect( rect[9] );ScreenToClient( &rect[9] ); for( int i=0;i<10;i++ ) { if( rect[i].PtInRect( point ) ) { HCURSOR hCursor; hCursor = AfxGetApp() -> LoadCursor(IDC_HANDCUR); ::SetCursor(hCursor); break; } } CDialog::OnMouseMove(nFlags, point); } void CDlg_ToolBar::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 int screenx = GetSystemMetrics(SM_CXSCREEN);// 获取屏幕宽度 [8/27/2013 Zero] CRect RectVer(screenx-110,5,screenx,23); //if( RectVer.PtInRect( point ) ) if( _rtClient.PtInRect( point ) ) { HCURSOR hCursor; hCursor = AfxGetApp() -> LoadCursor(IDC_HANDCUR); ::SetCursor(hCursor); return; } CRect rect[10]; GetDlgItem(IDC_PIC1)->GetWindowRect( rect[0] ); ScreenToClient( &rect[0] ); GetDlgItem(IDC_PIC2)->GetWindowRect( rect[1] ); ScreenToClient( &rect[1] ); GetDlgItem(IDC_PIC3)->GetWindowRect( rect[2] ); ScreenToClient( &rect[2] ); GetDlgItem(IDC_PIC4)->GetWindowRect( rect[3] ); ScreenToClient( &rect[3] ); GetDlgItem(IDC_PIC5)->GetWindowRect( rect[4] ); ScreenToClient( &rect[4] ); GetDlgItem(IDC_PIC6)->GetWindowRect( rect[5] ); ScreenToClient( &rect[5] ); GetDlgItem(IDC_PIC7)->GetWindowRect( rect[6] ); ScreenToClient( &rect[6] ); GetDlgItem(IDC_PIC8)->GetWindowRect( rect[7] ); ScreenToClient( &rect[7] ); GetDlgItem(IDC_PIC9)->GetWindowRect( rect[8] ); ScreenToClient( &rect[8] ); GetDlgItem(IDC_PIC10)->GetWindowRect( rect[9] );ScreenToClient( &rect[9] ); for( int i=0;i<10;i++ ) { if( rect[i].PtInRect( point ) ) { HCURSOR hCursor; hCursor = AfxGetApp() -> LoadCursor(IDC_CURSOR2); ::SetCursor(hCursor); break; } } CDialog::OnLButtonDown(nFlags, point); } void CDlg_ToolBar::OnLButtonUp(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 CMainFrame *pMainFrm=(CMainFrame*)AfxGetApp()->m_pMainWnd; if( pMainFrm==NULL ) return; int screenx=GetSystemMetrics(SM_CXSCREEN);// 获取屏幕宽度 [8/27/2013 Zero] CRect RectVer(screenx-110,5,screenx,23); //CRect RectVer(7,,screenx,23); CRect rect[10]; GetDlgItem(IDC_PIC1)->GetWindowRect( rect[0] ); ScreenToClient( &rect[0] ); GetDlgItem(IDC_PIC2)->GetWindowRect( rect[1] ); ScreenToClient( &rect[1] ); GetDlgItem(IDC_PIC3)->GetWindowRect( rect[2] ); ScreenToClient( &rect[2] ); GetDlgItem(IDC_PIC4)->GetWindowRect( rect[3] ); ScreenToClient( &rect[3] ); GetDlgItem(IDC_PIC5)->GetWindowRect( rect[4] ); ScreenToClient( &rect[4] ); GetDlgItem(IDC_PIC6)->GetWindowRect( rect[5] ); ScreenToClient( &rect[5] ); GetDlgItem(IDC_PIC7)->GetWindowRect( rect[6] ); ScreenToClient( &rect[6] ); GetDlgItem(IDC_PIC8)->GetWindowRect( rect[7] ); ScreenToClient( &rect[7] ); GetDlgItem(IDC_PIC9)->GetWindowRect( rect[8] ); ScreenToClient( &rect[8] ); GetDlgItem(IDC_PIC10)->GetWindowRect( rect[9] ); ScreenToClient( &rect[9] ); GetDlgItem(IDC_PIC1)->GetClientRect( rect[0] ); ClientToScreen(&rect[0]); GetDlgItem(IDC_PIC2)->GetClientRect( rect[1] ); ClientToScreen(&rect[1]); GetDlgItem(IDC_PIC3)->GetClientRect( rect[2] ); ClientToScreen(&rect[2]); GetDlgItem(IDC_PIC4)->GetClientRect( rect[3] ); ClientToScreen(&rect[3]); GetDlgItem(IDC_PIC5)->GetClientRect( rect[4] ); ClientToScreen(&rect[4]); GetDlgItem(IDC_PIC6)->GetClientRect( rect[5] ); ClientToScreen(&rect[5]); GetDlgItem(IDC_PIC7)->GetClientRect( rect[6] ); ClientToScreen(&rect[6]); GetDlgItem(IDC_PIC8)->GetClientRect( rect[7] ); ClientToScreen(&rect[7]); GetDlgItem(IDC_PIC9)->GetClientRect( rect[8] ); ClientToScreen(&rect[8]); GetDlgItem(IDC_PIC10)->GetClientRect( rect[9] ); ClientToScreen(&rect[9]); int nType = -1; for( int i=0;i<10;i++ ) { if( rect[i].PtInRect( point ) ) { HCURSOR hCursor; hCursor = AfxGetApp() -> LoadCursor(IDC_HANDCUR); ::SetCursor(hCursor); nType = i; break; } } switch( nType ) { case 0: //{ // CHAR szMaxID[MAX_ID + 1] = {0}; // CDBInterface::GetInstancePtr()->GetMaxID("t_data_rec", "id", szMaxID); //} break; case 1: break; case 2: pMainFrm->OnSummaryLog(); break; case 3: break; case 4: break; case 5: break; case 6: pMainFrm->OnEditPwdTool(); break; case 7: pMainFrm->OnSysPara(); break; case 8: pMainFrm->m_hleftDockBar.ShowWindow(SW_SHOW); pMainFrm->m_hleftDockBar.SendMessage(WM_MY_INVALIDATE,0,0 ); break; case 9: pMainFrm->OnSuperEnd(); return; } CDialog::OnLButtonUp(nFlags, point); } void CDlg_ToolBar::OnTimer(UINT nIDEvent) { // TODO: 在此添加消息处理程序代码和/或调用默认值 CTime time=CTime::GetCurrentTime(); int nHour=time.GetHour(); int nMinute=time.GetMinute(); int nSecond=time.GetSecond(); m_clock.SetClock(nHour,nMinute,nSecond); CDialog::OnTimer(nIDEvent); }