⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 screendlg.cpp

📁 一个很不错的
💻 CPP
📖 第 1 页 / 共 4 页
字号:
		screensize.cy=rect1.bottom-rect1.top;
		hBitmap1 = ::CreateCompatibleBitmap(hScreenDC1,screensize.cx,screensize.cy);
		hOldBMP1 = ::SelectObject(MemDC1,hBitmap1);
		::BitBlt(MemDC1,0,0,screensize.cx,screensize.cy,hScreenDC1,323,23,SRCCOPY);
		::SelectObject(MemDC1,hOldBMP1);
		::DeleteObject(MemDC1);
		::ReleaseDC(hWnd1_gpsl,hScreenDC1);
	    m_bitmap1.Attach(hBitmap1);
	    m_bitmap1.GetBitmap(&bm1);
	    m_bitmap1.GetBitmapBits(bm1.bmHeight*bm1.bmWidthBytes,px_data); 
		::DeleteObject(hBitmap1);
		CString s1="";
		int colume=0;
		for (int i=0;i<8;i++)
			for (int j=0;j<5*4;j++)
			{
	  			px_data_3[i*5*4+j]=px_data[i*56*4+colume*4+j];
			}
		s1=s1+character2(project2(px_data_3));
		colume=6;
		for ( i=0;i<8;i++)
			for (int j=0;j<5*4;j++)
			{
	  			px_data_3[i*5*4+j]=px_data[i*56*4+colume*4+j];
			}
		s1=s1+character2(project2(px_data_3));
		colume=12;
		for ( i=0;i<8;i++)
			for (int j=0;j<5*4;j++)
			{
	  			px_data_3[i*5*4+j]=px_data[i*56*4+colume*4+j];
			}
		colume=18;
		s1=s1+character2(project2(px_data_3));
		for ( i=0;i<8;i++)
			for (int j=0;j<5*4;j++)
			 {
	  			px_data_3[i*5*4+j]=px_data[i*56*4+colume*4+j];
			}
		s1=s1+character2(project2(px_data_3));
		colume=24;
		for ( i=0;i<8;i++)
			for (int j=0;j<5*4;j++)
			{
	  			px_data_3[i*5*4+j]=px_data[i*56*4+colume*4+j];
			}
		s1=s1+character2(project2(px_data_3));
		colume=30;
		for ( i=0;i<8;i++)
			for (int j=0;j<5*4;j++)
			{
	  			px_data_3[i*5*4+j]=px_data[i*56*4+colume*4+j];
			}
		s1=s1+character2(project2(px_data_3));
		colume=36;
		for ( i=0;i<8;i++)
			 for (int j=0;j<5*4;j++)
			{
	  			px_data_3[i*5*4+j]=px_data[i*56*4+colume*4+j];
			}
		s1=s1+character2(project2(px_data_3));
		if (s1=="")
			s1="0";
		m_kmsl=s1;
		m_bitmap1.Detach();
		::SetForegroundWindow(hWnd1_kyzj);
		hScreenDC1 = ::GetDC(hWnd1_kyzj);   //获得屏幕的HDC.
		MemDC1 = ::CreateCompatibleDC(hScreenDC1);
		::GetWindowRect(hWnd1_kyzj,&rect1);
		rect1.left=rect1.left+214;
		rect1.right=rect1.left+56;
		rect1.top=rect1.top+23;
		rect1.bottom=rect1.top+8;
		screensize.cx=rect1.right-rect1.left;
		screensize.cy=rect1.bottom-rect1.top;
		hBitmap1 = ::CreateCompatibleBitmap(hScreenDC1,screensize.cx,screensize.cy);
		hOldBMP1 = ::SelectObject(MemDC1,hBitmap1);
		::BitBlt(MemDC1,0,0,screensize.cx,screensize.cy,hScreenDC1,214,23,SRCCOPY);
		::SelectObject(MemDC1,hOldBMP1);
		::DeleteObject(MemDC1);
		::ReleaseDC(hWnd1_kyzj,hScreenDC1);
		m_bitmap1.Attach(hBitmap1);
		m_bitmap1.GetBitmap(&bm1);
		m_bitmap1.GetBitmapBits(bm1.bmHeight*bm1.bmWidthBytes,px_data); 
		::DeleteObject(hBitmap1);
		s1="";
		colume=0;
		for ( i=0;i<8;i++)
			for (int j=0;j<5*4;j++)
			{
	  			 px_data_3[i*5*4+j]=px_data[i*56*4+colume*4+j];
			}
		s1=s1+character2(project2(px_data_3));
		colume=6;
		for ( i=0;i<8;i++)
			for (int j=0;j<5*4;j++)
			{
	  			 px_data_3[i*5*4+j]=px_data[i*56*4+colume*4+j];
			}
		s1=s1+character2(project2(px_data_3));
		colume=12;
		for ( i=0;i<8;i++)
			 for (int j=0;j<5*4;j++)
			 {
	  			px_data_3[i*5*4+j]=px_data[i*56*4+colume*4+j];
			}
		colume=18;
		s1=s1+character2(project2(px_data_3));
		for ( i=0;i<8;i++)
			 for (int j=0;j<5*4;j++)
			{
	  			px_data_3[i*5*4+j]=px_data[i*56*4+colume*4+j];
			}
		s1=s1+character2(project2(px_data_3));
		colume=24;
		for ( i=0;i<8;i++)
			for (int j=0;j<5*4;j++)
			{
	  			px_data_3[i*5*4+j]=px_data[i*56*4+colume*4+j];
			}
		s1=s1+character2(project2(px_data_3));
		colume=30;
		for ( i=0;i<8;i++)
			for (int j=0;j<5*4;j++)
			{
	  			 px_data_3[i*5*4+j]=px_data[i*56*4+colume*4+j];
			}
		s1=s1+character2(project2(px_data_3));
		colume=36;
		for ( i=0;i<8;i++)
			for (int j=0;j<5*4;j++)
			{
	  			px_data_3[i*5*4+j]=px_data[i*56*4+colume*4+j];
			}
		s1=s1+character2(project2(px_data_3));
		if (s1=="")
			s1="0";
		if (atoi(s1.GetBuffer(0))>fund_limit )
	         s1.Format("%d",fund_limit);
		m_zyzj=s1;

		m_bitmap1.Detach();
		::SetForegroundWindow(hWnd1_kyzj);
		hScreenDC1 = ::GetDC(hWnd1_kyzj);   //获得屏幕的HDC.
		MemDC1 = ::CreateCompatibleDC(hScreenDC1);
		::GetWindowRect(hWnd1_kyzj,&rect1);
		rect1.left=rect1.left+392;
		rect1.right=rect1.left+56;
		rect1.top=rect1.top+23;
		rect1.bottom=rect1.top+8;
		screensize.cx=rect1.right-rect1.left;
		screensize.cy=rect1.bottom-rect1.top;
		hBitmap1 = ::CreateCompatibleBitmap(hScreenDC1,screensize.cx,screensize.cy);
		hOldBMP1 = ::SelectObject(MemDC1,hBitmap1);
		::BitBlt(MemDC1,0,0,screensize.cx,screensize.cy,hScreenDC1,392,23,SRCCOPY);
		::SelectObject(MemDC1,hOldBMP1);
		::DeleteObject(MemDC1);
		::ReleaseDC(hWnd1_kyzj,hScreenDC1);
 //  	WriteBmpToFile(hBitmap1,	"d:\\129.bmp");

		m_bitmap1.Attach(hBitmap1);
		m_bitmap1.GetBitmap(&bm1);
		m_bitmap1.GetBitmapBits(bm1.bmHeight*bm1.bmWidthBytes,px_data); 
		::DeleteObject(hBitmap1);
		s1="";
		colume=0;
		for ( i=0;i<8;i++)
			for (int j=0;j<5*4;j++)
			{
	  			 px_data_3[i*5*4+j]=px_data[i*56*4+colume*4+j];
			}
		s1=s1+character2(project2(px_data_3));
		colume=6;
		for ( i=0;i<8;i++)
			for (int j=0;j<5*4;j++)
			{
	  			 px_data_3[i*5*4+j]=px_data[i*56*4+colume*4+j];
			}
		s1=s1+character2(project2(px_data_3));
		colume=12;
		for ( i=0;i<8;i++)
			 for (int j=0;j<5*4;j++)
			 {
	  			px_data_3[i*5*4+j]=px_data[i*56*4+colume*4+j];
			}
		colume=18;
		s1=s1+character2(project2(px_data_3));
		for ( i=0;i<8;i++)
			 for (int j=0;j<5*4;j++)
			{
	  			px_data_3[i*5*4+j]=px_data[i*56*4+colume*4+j];
			}
		s1=s1+character2(project2(px_data_3));
		colume=24;
		for ( i=0;i<8;i++)
			for (int j=0;j<5*4;j++)
			{
	  			px_data_3[i*5*4+j]=px_data[i*56*4+colume*4+j];
			}
		s1=s1+character2(project2(px_data_3));
		colume=30;
		for ( i=0;i<8;i++)
			for (int j=0;j<5*4;j++)
			{
	  			 px_data_3[i*5*4+j]=px_data[i*56*4+colume*4+j];
			}
		s1=s1+character2(project2(px_data_3));
		colume=36;
		for ( i=0;i<8;i++)
			for (int j=0;j<5*4;j++)
			{
	  			px_data_3[i*5*4+j]=px_data[i*56*4+colume*4+j];
			}
		s1=s1+character2(project2(px_data_3));
		if (s1=="")
			s1="0";
		zzc=s1;
       if (pre_m_kmsl=="initial")
			pre_m_kmsl=m_kmsl;
	   if (pre_zzc=="initial")
			pre_zzc=zzc;
       if (pre_m_kmsl != m_kmsl)
	   {
		   	CString sellorbuy,winorlost;
		    GetLocalTime(&CurTime);
		    sYear.Format("%d年",CurTime.wYear);
		    sMonth.Format("%d月",CurTime.wMonth);
			sDay.Format("%d日",CurTime.wDay);
		    sHour.Format("%d时",CurTime.wHour);
		    sMinute.Format("%d分",CurTime.wMinute);
		    sSecond.Format("%d秒",CurTime.wSecond);
			curr_time= sYear+ sMonth + sDay+ sHour+sMinute+sSecond;
			if ( atoi(m_kmsl.GetBuffer(0)) > atoi(pre_m_kmsl.GetBuffer(0)) )
				sellorbuy="buy";
			else
				sellorbuy="sell";
			winorlost=zzc;

			try
			{
				// 写入各字段值
				m_pRecordset1->AddNew();
				m_pRecordset1->PutCollect("sellorbuy", _variant_t(sellorbuy));
				m_pRecordset1->PutCollect("time", _variant_t(curr_time));
				m_pRecordset1->PutCollect("winorlost", _variant_t(winorlost));
				m_pRecordset1->PutCollect("fund", _variant_t(m_zyzj));
				m_pRecordset1->Update();
			}
			catch(_com_error *e)
			{
				AfxMessageBox(e->ErrorMessage());
			}

	   }
  //      UpdateData(FALSE);
		pre_m_kmsl=m_kmsl;
		pre_zzc=zzc;
		fresh_needed=0;
}

//读取可用资金等数据的线程
void read_data(LPVOID param)
{
	CScreenDlg * pCScreenDlg = (CScreenDlg *) param;
	HWND hwnd2;
	int i=0;
    int j=0;
	while (1)
	{
		GetLocalTime(&CurTime1);
        hwnd2=::FindWindow(NULL,"提示信息");
        if (hwnd2)
		{
	       hwnd2=::GetWindow(hwnd2,GW_CHILD);
           ::PostMessage(hwnd2,BM_CLICK,0,0);
		   j=j+1;
		   //连续出现10次,报警!!!
		   if (j>20)
			   Beep(500,50000);
		}
		else
		{
			j=0;
		}
        hwnd2=::FindWindow(NULL,"错误");
        if (hwnd2)
		{
	       hwnd2=::GetWindow(hwnd2,GW_CHILD);
           ::PostMessage(hwnd2,BM_CLICK,0,0);
		}

	    hwnd2=::FindWindow(NULL,"警告");
        if (hwnd2)
		{
			hwnd2=::GetWindow(hwnd2,GW_CHILD);
			//取消
			//::PostMessage(hwnd2,BM_CLICK,0,0);
			  hwnd2=::GetNextWindow(hwnd2,GW_HWNDNEXT);
			//确定
			::PostMessage(hwnd2,BM_CLICK,0,0);
		}
		if (fresh_needed==2)
		   pCScreenDlg->read_fund();
		if (fresh_needed==1)
		   pCScreenDlg->read_fund();

       if (i>10)
		{
		   pCScreenDlg->read_fund();
			i=0;
		}

  //     if (pCScreenDlg->m_kmsl=="0" && atof(pCScreenDlg->m_zyzj.GetBuffer(0))<10)
//		{
//		    pCScreenDlg->read_fund();
//		    undo_trade();
//		}

	   i=i+1;
	   Sleep(500);
	
	}//end of while(1)
}

void read_data1(LPVOID param)
{
	CScreenDlg * pCScreenDlg = (CScreenDlg *) param;
	HWND hwnd2;
	int i=0;
	int j=0;

	while (1)
	{
		GetLocalTime(&CurTime1);
        hwnd2=::FindWindow(NULL,"提示信息");
        if (hwnd2)
		{
	       hwnd2=::GetWindow(hwnd2,GW_CHILD);
           ::PostMessage(hwnd2,BM_CLICK,0,0);
		}
        hwnd2=::FindWindow(NULL,"错误");
        if (hwnd2)
		{
	       hwnd2=::GetWindow(hwnd2,GW_CHILD);
           ::PostMessage(hwnd2,BM_CLICK,0,0);
		}

	    hwnd2=::FindWindow(NULL,"警告");
        if (hwnd2)
		{
			hwnd2=::GetWindow(hwnd2,GW_CHILD);
			//取消
			//::PostMessage(hwnd2,BM_CLICK,0,0);
			  hwnd2=::GetNextWindow(hwnd2,GW_HWNDNEXT);
			//确定
			::PostMessage(hwnd2,BM_CLICK,0,0);
		}

       if (i>10)
		{
//		   pCScreenDlg->read_fund();
			i=0;
		}

       if (j>30)
		{
//		   undo_trade();
			j=0;
		}
	   if (buy_action==1)
	   {
//		   pCScreenDlg->OnButton3();
	   }

	   if (sell_action==1)
	   {
//		   pCScreenDlg->OnButton1();
	   }
/*		if (is_undo==1 && ((CTimeSpan)((CTime)CurTime1-(CTime)TradeTime).GetTotalSeconds() >= undo_time) )
		{
			undo_trade();
		}
		else if ( ((CTimeSpan)((CTime)CurTime1-(CTime)TradeTime).GetTotalSeconds() >= 2*undo_time) &&
			      ((CTimeSpan)((CTime)CurTime1-(CTime)UnTradeTime).GetTotalSeconds() >= undo_time) )
		{
            ::PostMessage(hwnd_esc,BM_CLICK,0,0);
			Sleep(500);
		} //end of if (fresh_needed==1)
		else
		{
			Sleep(500);
		}

*///	   ::PostMessage(hwnd_esc,BM_CLICK,0,0);

	   i=i+1;
	   j=j+1;
	
	Sleep(500);
	
	}//end of while(1)
}

void WriteBmpToFile(HBITMAP hBitmap,	char* m_strFilePath)
{
    HDC hDC =::CreateDC("DISPLAY",NULL,NULL,NULL); 
    int iBits = ::GetDeviceCaps(hDC, BITSPIXEL) * ::GetDeviceCaps(hDC, PLANES);//当前分辨率下每个像素所占字节数  
    ::DeleteDC(hDC);

    WORD   wBitCount;   //位图中每个像素所占字节数    
    if (iBits <= 1)
		wBitCount = 1;
    else if (iBits <= 4)
		wBitCount = 4;
    else if (iBits <= 8)
		wBitCount = 8;
    else if (iBits <= 24)
		wBitCount = 24;
    else
		wBitCount = iBits;
		    
	DWORD   dwPaletteSize=0;	//调色板大小, 位图中像素字节大小 
    if (wBitCount <= 8)		
		dwPaletteSize = (1 << wBitCount) *	sizeof(RGBQUAD);	
	

	BITMAP  bm;        //位图属性结构
    ::GetObject(hBitmap, sizeof(bm), (LPSTR)&bm);  

    
	BITMAPINFOHEADER   bi;       //位图信息头结构     
	bi.biSize            = sizeof(BITMAPINFOHEADER);  
    bi.biWidth           = bm.bmWidth;
    bi.biHeight          = bm.bmHeight;
    bi.biPlanes          = 1;
    bi.biBitCount        = wBitCount;
    bi.biCompression     = BI_RGB; //BI_RGB表示位图没有压缩
    bi.biSizeImage       = 0;
    bi.biXPelsPerMeter   = 0;
    bi.biYPelsPerMeter   = 0;
    bi.biClrUsed         = 0;
    bi.biClrImportant    = 0;
	
    DWORD dwBmBitsSize = ((bm.bmWidth * wBitCount+31)/32) * 4 * bm.bmHeight;    
    HANDLE hDib  = ::GlobalAlloc(GHND,dwBmBitsSize + dwPaletteSize + sizeof(BITMAPINFOHEADER));  //为位图内容分配内存
    LPBITMAPINFOHEADER lpbi = (LPBITMAPINFOHEADER)GlobalLock(hDib);
    *lpbi = bi;
	
    HANDLE hPal = ::GetStockObject(DEFAULT_PALETTE);  // 处理调色板 
	HANDLE  hOldPal=NULL; 
    if (hPal)
    {
		hDC = ::GetDC(NULL);
		hOldPal = SelectPalette(hDC,(HPALETTE)hPal, FALSE);
		RealizePalette(hDC);
    }
    ::GetDIBits(hDC, hBitmap, 0, (UINT) bm.bmHeight,(LPSTR)lpbi + sizeof(BITMAPINFOHEADER)+dwPaletteSize,(BITMAPINFO*)lpbi,DIB_RGB_COLORS);// 获取该调色板下新的像素值
    if (hOldPal)//恢复调色板
    {
		SelectPalette(hDC, (HPALETTE)hOldPal, TRUE);
		RealizePalette(hDC);
		::ReleaseDC(NULL, hDC);
    }	
   
	BITMAPFILEHEADER   bmfHdr; //位图文件头结构     
	bmfHdr.bfType = 0x4D42;  // "BM"  	// 设置位图文件头
	DWORD dwDIBSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + dwPaletteSize + dwBmBitsSize;  
	bmfHdr.bfSize = dwDIBSize;
	bmfHdr.bfReserved1 = 0;
	bmfHdr.bfReserved2 = 0;
	bmfHdr.bfOffBits = (DWORD)sizeof(BITMAPFILEHEADER) + (DWORD)sizeof(BITMAPINFOHEADER) + dwPaletteSize;
	
	HANDLE hFile = CreateFile(m_strFilePath, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL);//创建位图文件   
	DWORD dwWritten;
	WriteFile(hFile, (LPSTR)&bmfHdr, sizeof(BITMAPFILEHEADER), &dwWritten, NULL);	// 写入位图文件头
	WriteFile(hFile, (LPSTR)lpbi, dwDIBSize, &dwWritten, NULL);// 写入位图文件其余内容
	
	GlobalUnlock(hDib);   //清除   
	GlobalFree(hDib);
	CloseHandle(hFile); 	
	
}


CString project1( unsigned   char   *px1,int a,int b)
{
int vector [10];
CString s_vector,s; 

 
  for(int i1=0;i1<10;i1++)
  {
	  vector[i1]=0;
	  for (int j1=0;j1<8*b/a;j1=j1+b/a)
	  {
		  int ispixel=0;
		  for (int k=0;k<b/a;k++)
		  {
			  
		    if (px1[i1*8*b/a+j1+k] != 0x00 )
			   ispixel=1;
		  }
		  vector[i1]=vector[i1]+ispixel;

	  }
  }


 for (int l=0;l<10;l++)
  {
	  s.Format("%d",vector[l]);
	  s_vector=s_vector+""+s;
  }

int ispixel=0;
for (int k1=0;k1<b/a;k1++)
 {
		  
  if (px1[4*8*b/a+4*b/a+k1] != 0x00 )
	  	ispixel=1;
}
if (ispixel==0)
  s_vector=s_vector+"0";
else
  s_vector=s_vector+"1";

return s_vector.Right(11);
}



CString project2( unsigned   char   *px1)
{//
int vector [8];
CString s_vector,s; 
int ispixel;
 
  for(int i1=0;i1<8;i1++)
  {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -