📄 screendlg.cpp
字号:
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 + -