广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 7757 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
f8806084
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x2
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
文章表情[C/C++] [问题]MFC--如何完整的将Bitmap贴至Dialog(已解决)
各位大大好,我有个问题想请教一下,我用VC建立一个dialog为主视窗的专案,今天有一张bitmap的图,大小可能会换,所以要动态贴图,程式码如下:
::SetWindowPos(this->GetSafeHwnd(),   //指向dialog的handle
        HWND_TOP,
       ..

访客只能看到部份内容,免费 加入会员 或由脸书 Google 可以看到全部内容



[ 此文章被f8806084在2005-09-13 12:18重新编辑 ]


献花 x0 回到顶端 [楼 主] From:台湾数位联合 | Posted:2005-09-12 09:33 |
Freelife
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x2 鲜花 x60
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

贴图的话,不是用"BitBlt"就可以了吗?
要改变图的大小,可以用"StretchBlt"


献花 x0 回到顶端 [1 楼] From:台湾中华电信 | Posted:2005-09-12 10:28 |
f8806084
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x2
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

嗯嗯~^^我的确是用bitblt贴上去的,但在MFC做贴图时若图比你给定的视窗大时它会被截成跟视窗同大小,惨的是,图我不能去缩小它,它给多大我就要把多大贴上去dialog,所以才要想办法把dialog(扣掉标题列)设成跟bitmap同大小^^",谢谢你能跟我参与讨论~ 表情


献花 x0 回到顶端 [2 楼] From:台湾数位联合 | Posted:2005-09-12 10:40 |
codeboy 手机
个人文章 个人相簿 个人日记 个人地图
社区建设奖
小有名气
级别: 小有名气 该用户目前不上站
推文 x6 鲜花 x331
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

不然先抓到目前dialog大小然后把他设定到比拟的图还大的大小
然后重新绘至萤幕再把图贴上~不知道行不行~ 表情



连结有问题请来信,我会尽快修正~^^
通报时请附上是"哪一篇失效"...这样我才能去修正~麻烦各位好心人士了~

[连结失效通报][ 网页.伺服.程式 讨论区]
----------------------在世界中心呼喊爱情----------------------
深深思念一个人的时候,我们不知不觉的地活在世界的中心...
献花 x0 回到顶端 [3 楼] From:台湾政府网际 | Posted:2005-09-12 11:28 |
Freelife
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x2 鲜花 x60
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

"GetClientRect"可以取得工作区的大小,
也就是不含标题列的矩形大小~

"GetWindowRect"取得视窗大小,
也就是包含标题列的大小~

希望对你有帮助 表情


献花 x1 回到顶端 [4 楼] From:台湾中华电信 | Posted:2005-09-13 10:02 |
f8806084
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x2
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

嗯嗯~~总算解决了,真得好开心,特别感谢freelife大大的提供,也谢谢板大的参与讨论喔 表情

关键是这里:

CRect rcFrame,rcClient;
GetWindowRect (rcFrame);
GetClientRect (rcClient);
int nCaptionY = ::GetSystemMetrics(SM_CYCAPTION);         //dialog的标题列
int nBorder = rcFrame.Height() - rcClient.Height() - nCaptionY; //边界(使windows看起来有立体感)

如此一来,在::SetWindowPos()函式里视窗大小设定时传入stBmpInfo.bmWidth+nBorder(宽)和stBmpInfo.bmHeight+nCaptionY+nBorder(高)即可!!

此文章被评分,最近评分记录
财富:20 (by codeboy) | 理由: 恭喜您解决问题喔~^^


献花 x0 回到顶端 [5 楼] From:台湾数位联合 | Posted:2005-09-13 12:14 |

首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.066339 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言