这个C++代码如何转成 delphi ?谢谢。
时间:2011-10-06
来源:互联网
C/C++ code
struct tagOsdHelper { tagOsdHelper() { m_nw=0; m_nh=0; m_hBmp=NULL; m_hOldBmp=NULL; m_pDibBits=NULL; m_pOldFont=NULL; } ~tagOsdHelper() { Reset(); } void Reset() { if(m_dc.GetSafeHdc()) { m_dc.SelectObject(m_pOldFont); m_pOldFont=NULL; ::SelectObject(m_dc.GetSafeHdc(),m_hOldBmp); m_hOldBmp=NULL; ::DeleteObject(m_hBmp); m_hBmp=NULL; ::DeleteDC(m_dc.Detach()); } m_pDibBits = NULL; m_nw=0; m_nh=0; m_font.DeleteObject(); } int m_nw; int m_nh; HBITMAP m_hBmp; HBITMAP m_hOldBmp; LPBYTE m_pDibBits; CDC m_dc; CFont m_font; CFont *m_pOldFont; };
作者: wealsh 发布时间: 2011-10-06
C/C++ code
int WINAPI TestPreDrawCallBack(int videoWindowId,LPBYTE pRgb24,int nw,int nh) { BITMAPINFO bi; memset(&bi,0,sizeof(bi)); bi.bmiHeader.biSize=sizeof(bi.bmiHeader); bi.bmiHeader.biWidth = nw; bi.bmiHeader.biHeight = nh; bi.bmiHeader.biPlanes=1; bi.bmiHeader.biBitCount=24; bi.bmiHeader.biSizeImage=nw*nh*3; bi.bmiHeader.biClrImportant=1; tagOsdHelper m_osdHelper; if(m_osdHelper.m_nw != nw || m_osdHelper.m_nh != nh) { //重新生成cache m_osdHelper.Reset(); ASSERT(m_osdHelper.m_pDibBits==NULL); ASSERT(m_osdHelper.m_hBmp==NULL); HBITMAP hBmp = CreateDIBSection( NULL, (BITMAPINFO*) &bi, DIB_RGB_COLORS, (LPVOID*)&m_osdHelper.m_pDibBits, NULL, 0 ); if(!hBmp) { //DW("fail CreateDIBSection"); return 0; } m_osdHelper.m_nw = nw; m_osdHelper.m_nh = nh; HDC hdcScreen = ::GetDC(NULL); HDC hdc = ::CreateCompatibleDC(hdcScreen); ::ReleaseDC(NULL,hdcScreen); hdcScreen=NULL; m_osdHelper.m_dc.Attach(hdc); m_osdHelper.m_hOldBmp = (HBITMAP)::SelectObject( hdc,hBmp); m_osdHelper.m_font.CreatePointFont(200,"Arial"); m_osdHelper.m_pOldFont = m_osdHelper.m_dc.SelectObject(&m_osdHelper.m_font); } if(!m_osdHelper.m_pDibBits) { //DW("invalid m_osdHelper.m_pDibBits"); return 0; } CDC& dc=m_osdHelper.m_dc; memcpy(m_osdHelper.m_pDibBits,pRgb24,bi.bmiHeader.biSizeImage); CRect rc(0,0,nw,nh); COLORREF clr=RGB(255,0,0); dc.SetBkMode(TRANSPARENT); dc.SetTextColor(clr); CString szText; CTime tmNow = CTime::GetCurrentTime(); rc.DeflateRect(100,100); CPen pen; pen.CreatePen(PS_SOLID,4,clr); CPen *pOldPen=dc.SelectObject(&pen); dc.MoveTo(rc.TopLeft()); dc.LineTo(rc.right,rc.top); dc.LineTo(rc.right,rc.bottom); dc.LineTo(rc.left,rc.bottom); dc.LineTo(rc.TopLeft()); dc.SelectObject(pOldPen); memcpy(pRgb24,m_osdHelper.m_pDibBits,bi.bmiHeader.biSizeImage); return 0; }
作者: wealsh 发布时间: 2011-10-06
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28