我想把如下代码改成SDK方式的代码,谢谢了

AnyStayIsJk 2009-09-08 04:40:32
CDC memDc;
memDc.CreateCompatibleDC(NULL);
CDC* pWindowDC=GetWindowDC();
CRect DrawArea;
GetWindowRect(DrawArea);

CBitmap airMap;
BITMAP airMapInfo;

airMap.LoadBitmap(IDB_BITMAP1);
airMap.GetBitmap(&airMapInfo);
memDc.SelectObject(&airMap);
pWindowDC->StretchBlt(0,0,DrawArea.Width(),DrawArea.Height(),&memDc,0,0,airMapInfo.bmWidth,airMapInfo.bmHeight,SRCCOPY);
airMap.DeleteObject();

//以下是移动窗口位置
HDC hScrDC;// 屏幕设备描述表
int xScrn,yScrn;// 屏幕分辨率

//为屏幕创建设备描述表
hScrDC = CreateDC("DISPLAY", NULL, NULL, NULL);

// 获得屏幕分辨率
HWND hWnd = ::FindWindow("Shell_TrayWnd", NULL);
RECT rc;
::GetWindowRect(hWnd, &rc);
int iHeight = rc.bottom -rc.top;
xScrn = GetDeviceCaps(hScrDC,HORZRES);
yScrn = GetDeviceCaps(hScrDC,VERTRES);


yScrn-=iHeight;



CFont font;
CFont *pOldFont=NULL;
font.CreatePointFont(90,"宋体");
pOldFont=(CFont *)pWindowDC->SelectObject(&font);

pWindowDC->SetBkMode(TRANSPARENT);//字体透明
pWindowDC->SetTextColor(RGB(255,255,255));
pWindowDC->TextOutA(10,100,"test");

MoveWindow(xScrn-DrawArea.Width(),yScrn-DrawArea.Height(),DrawArea.Width(),DrawArea.Height());
...全文
128 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wu_qing_yun 2009-09-08
  • 打赏
  • 举报
回复
挺简单的,把MFC的包装去掉,换成API
bingying19872008 2009-09-08
  • 打赏
  • 举报
回复
楼主是想将这段函数做中标准dll吧 方便自己画图呵呵
huqiming 2009-09-08
  • 打赏
  • 举报
回复
好像简单了点儿,路过不发布答案了
科学家 2009-09-08
  • 打赏
  • 举报
回复
CDC换成HDC ,CFont换成HFont,CRect换成RECT,其余各函数将函数前面全部换成::,然后看函数使用方法,即可。或者直接去函数的Go to define看看MFC干了什么。抄过来大体一改:如
pOldFont=(CFont *)pWindowDC->SelectObject(&font);
改成:
HFont newFt = ::CreateFont(............
HGDIOBJECT oldFt = ::SelectObject(HDC hWindowDC,&newFt);
fox000002 2009-09-08
  • 打赏
  • 举报
回复
确实都是些剥去一层就是 API 的代码

自己试着改改吧
xylicon 2009-09-08
  • 打赏
  • 举报
回复
基本上按照2楼的来就行了,另外一些函数自己找找MSDN相应的win32 api就行了。
wltg2001 2009-09-08
  • 打赏
  • 举报
回复
如果楼主实在不会的话,等我晚上帮你改,不过建议还是自己动一下手好一点,毕竟这个不难。
wltg2001 2009-09-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jyh_baoding 的回复:]
可以,不过WIN32的离不开微软,意义不大
[/Quote]
Win32是离不开MS,难道楼主的MFC就能离开?
这个改起来容易,因为几乎每个函数都有相应的API,比如:
CDC memDc;
memDc.CreateCompatibleDC(NULL);
改成::CreateCompatibleDC(HDC ...)就行了。
gtsfreer 2009-09-08
  • 打赏
  • 举报
回复
主要就是改CDC等几个绘图的类对象吧?CDC-->HDC, CBitmap-->Bitmap,CFont-->Font,CRect-->RECT?
jyh_baoding 2009-09-08
  • 打赏
  • 举报
回复
可以,不过WIN32的离不开微软,意义不大

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧