说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

如何用位图把整个对话框填满?

编辑:说三道四文库 发布时间:2017-04-26 10:02
HTML文档下载 WORD文档下载 PDF文档下载
要象超级解霸一样,同时还能填满如编辑框,按钮等, 越早解决,越详细分越高,可以突破系统限制,最多800分。
再次感谢!!!
获取对话框尺寸GetClientRect(&rect)
用rect画位图StretchBlt()
能不能详细点?如果只是画图,则不能给分,早已可用selectobject()和bitblt()画图,请保证能画上编辑框,静态框等控件上!!
将编辑框、静态框等置成透明状态不就可以了吗?
9494
nod
我做了一个程序,象你所说的那样位图充满了整个对话框,还能显示进度条,我的做法很简单,就是画一个图,导入,放到对话框,然后将对话框标题栏去掉,拉动对话框里边的蓝线与外面平齐,再使对话框和位图一样大小,在程序里边调用SetWindowPos设置对话框大小和位图大小一致,保证进度条位置正确。(不调用SetWindowPos函数,在使用大字体时对话框和位图大小会不一致,进度条也会跑到不知什么地方去。)
雪鹰:试过了,将静态框置成透明,但静态框背景不改变,仍然是灰色,希望能成超级解霸一样,静态框背景也变成位图的背景
我试过了,我的这个程序里边进度条的背景就是位图,我在资源编辑器里边也没有任何特殊设置:试看我的代码:
BOOL CALLBACK SplashProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
HWND ProgHwnd;
int  cx,cy;
switch (uMsg)
{
case WM_INITDIALOG:
cx = GetSystemMetrics(SM_CXSCREEN);
cy = GetSystemMetrics(SM_CYSCREEN);
cx = (cx-300)/2;
cy = (cy-230)/2;
hProgress = GetDlgItem(hDlg,IDC_PROGRESS1);
SendMessage(hProgress,PBM_SETRANGE,0L,MAKELONG(0,470));
SendMessage(hProgress,PBM_SETSTEP,1L,0L);
         SendDlgItemMessage(hDlg,IDC_LOGO,STM_SETIMAGE,IMAGE_BITMAP,
            (LPARAM)LoadImage(GetModuleHandle(NULL),MAKEINTRESOURCE(IDB_BITMAP3),IMAGE_BITMAP,
                              0,0,LR_LOADTRANSPARENT | LR_LOADMAP3DCOLORS));
SetWindowPos(hDlg,HWND_TOP,cx,cy,300,230,SWP_SHOWWINDOW);
ProgHwnd = GetDlgItem(hDlg,IDC_PROGRESS1);
SetWindowPos(ProgHwnd,HWND_TOP,71,168,161,20,SWP_SHOWWINDOW);
break;

case WM_DESTROY:
break;


case WM_COMMAND:
switch (GET_WM_COMMAND_ID(wParam, lParam))
{
case IDCANCEL:
break;

case IDABORT:
ShowWindow(hDlg, SW_HIDE);
break;

}
break;

default:
return(FALSE);
}

return(TRUE);
}
需要自己重新写按钮等等控件。
我想如果可以用一种刷子直接以位图刷一下对话框,同时框内所有控件都刷在里面,不就可以了吗?
softwarehe:你的方法我晚上试,明天再与你联系
BOOL CDlgBmp::OnInitDialog() 
{
m_nType = iType;

CRect rectClient;
CBitmap* pBmpOld;

CClientDC dc(GetDesktopWindow());
VERIFY(m_dcMem.CreateCompatibleDC(&dc));
VERIFY(m_brush=(HBRUSH)GetStockObject(HOLLOW_BRUSH));
VERIFY(m_bmpBackground.LoadBitmap(bmpId));
m_bmpBackground.GetObject(sizeof(BITMAP),&m_bmInfo);
VERIFY(pBmpOld=m_dcMem.SelectObject(&m_bmpBackground));
VERIFY(m_hBmpOld=(HBITMAP)pBmpOld->GetSafeHandle());
m_HollowBrush.CreateStockObject(HOLLOW_BRUSH);
m_bBmpLoad = true;
}

BOOL CDlgBmp::OnEraseBkgnd(CDC* pDC) 
{
if (!m_bBmpLoad)
return CDialog::OnEraseBkgnd(pDC);

CRect rect;
int x = 0, y = 0;
GetClientRect(&rect);
pDC->StretchBlt(rect.left,rect.top,rect.Width(),rect.Height(),
&m_dcMem,0,0,m_bmInfo.bmWidth-1,m_bmInfo.bmHeight-1,SRCCOPY);
    return TRUE;
}
笨驴:如果有人认为你是笨驴,那么他才是真正的笨驴。能不能解释一下m_dcMem,m_bmpBackground,m_HollowBrush,m_hBmpOld数据类型和意义??分数可以再加
其實你的問題的關鍵在于對話框上所有的控件的背景都要是透明的,我以前好象看到過用vc做透明控件的文章,我幫你找找看
softwarehe:
你的方法我试了,应该可以让进度条背景改变,但我要的是对话框和框内的所有控件变化,这种方法只能对所有控件一一处理,不胜其烦,也不能保证背景是完整的一张图;
另外题外话:如何在对话框里获得对话框本身的句柄??

笨驴:使用了你的代码,不行。 考虑以下因素,对话框没有OnEraseBkgnd事件;代码还是不能把位图刷刷到整个对话框上(包括其他控件);如果你是可以的,请给我做一个简单的PROJECT发给我,可编译执行的。
谁能解决???梁照新在吗?
我用MFC时,用CPaintDC类的dc,用BitBlt刷一下就行了,但用CDC,CClientDC就会把控件给盖掉,不知CPaintDC对应的dc,在API中怎么得到,应该很容易吧。
用CPaintDC刷一下就行了?什么意思,是控件背景变成位图吗?用CDC,CCliendDC就会把控件盖掉?控件被位图盖掉不能显示了??请详细说明
CPaintDC 在MFC中很容易得到,CPaintDC dc(this); 
我会的就是CPaintDC ,但是静态框等控件背景仍然是灰色
高手快请出招!!!!!!!!!!!!!!!!!!!!
//回答
CBitmap m_bmpBackground;
CBrush m_HollowBrush;
CDC m_dcMem;
HBITMAP m_hBmpOld;
HBRUSH m_brush;
BITMAP m_bmInfo;
BOOL m_bBmpLoad;
看变量名就知道什么意思了
我给你一个例子吧,匆匆忙忙,不太详细
谢谢,PLEASE MAIL TO wwtree@sina.com
发了
笨驴: 在修正了一些BUG后,可以运行了,但位图只能选择很小的,不然loadbitmap时会失败;能告诉我答案吗?你已经获得了200分,如果能告诉我上面的答案,可以在加个贴子送分
另外,我的理解是它的原理是在对话框启动时画图,(用stretchblt()或bitblt()),再在OnPaint()中发消息让所有控件变透明,这种理解对吗?
欢迎提供别的思路
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
问题已解决,我以前的理解有误,正确应该是用stretchblt()或bitblt())绘图,再在Onctlcolor()中发消息让所有控件变透明
HBTC精彩回顾 Hadoop专家分享大数据技术工具与最佳实践 苹果iTV规格泄露:iOS应用开发的新蓝海 Facebook觊觎微信鼻祖WhatsApp,但谈不上收购 首款社交API应用 Facebook Messenger for Firefox正式上线! 共享软件海外营销策略与实战分析(沈阳站)成功落幕 移动之伤:为什么山寨游戏比原创更火? IBM在京发布PureData 主打数据交易处理、操作分析 Intel发布Hadoop免费版 全力拓展生态圈 突出图片搜索:微软向测试人员开放Socl社交搜索 豌豆荚创始人:和巨头竞争,我们拼产品和技术 “互联网女皇”报告解读:智能电视大趋势 苹果扩大其北卡罗莱纳州燃料电池发电场规模 Oracle回收站使用全攻略 微软这次很诚实:IE真的糟透了 Facebook进军短信业务,挑战微信鼻祖WhatsApp 从菜鸟到专家的五步编程语言学习法 亚马逊企业文化:从书贩到云服务巨头的催化剂 明年Google I/O大会日程敲定 或发Android“酸橙派”? 绝境求生,WebOS寄望Android Facebook在移动路上走过的那些弯路 曙光聂华:推动数据融合 CloudStack Committer李学辉:2013年社区将爆发 继续霸权:美众院否决联合国掌控互联网 墨迹天气创始人金犁:巧用细分市场的力量 Windows 8的IE10在浏览器安全测试中独占鳌头 程序员如何做出“不难看”的设计 JDK6明年2月停止更新,甲骨文呼吁尽快升级至7 《时代》评选年度十大视频游戏,激战2居首 《时代》评选年度十大科技产品,iPhone 5居首 Loopjoy:让开发者在移动游戏里贩售真货 iPhone 5S真机照片泄露 明年初上市 俺在WINDOWS2000 SERVER 中用哪一类用户可以不让别的人乱动我的机子? 如何远程定时注销? 谁能告诉我用微软的screnc加密的详细步骤? 能否共同讨论一下关于打开dicom3.0格式文件的问题,我只有十分了,大家以学习为主,好吗? 请问那里有 Essential C++中文版 和 More Effective C++ 中文版供下载 当吸烟学生遭遇班主任.... 在次发动QQ号码大集合。要求最少是中等水平的朋友留QQ。如果你要是感觉太差了还是算了不要留了。 关于mdi窗口 caj格式,分多多,先放100分给up的 CSDN计划在下半年开展收费会员服务 ListView 控件问题! 窗口背景的画布用什么控件 压缩流的中文问题 关于javabean的路径问题 新配了一台机子,有点问题,望高手指点? 请问当知道局域网内机器的ip以及文件夹的路径能否访问其文件夹下面的文件 我买了一台新机子,有点问题,清高手指点 一个关于TreeView的问题 谁有http代理方面的资料或文档? 数据库问题很难...初级莫入 算法设计 用cuteftp如何上传大于1M的文件!?? 查询和统计问题 一个关于随机数的算法问题! Redhat 7.2下怎样安装双网卡,没有XWINDOW??? 怎样把下拉列表框设置为只读属性?? 我读取的html文件内容用innerHTML方式放入iframe中为什么部分内容被删除了? AutoCAD VBA 的问题 我在98下装media player为什么提示wmvcore.dll错误 如何进行序列化? 我在LAN中装pp点点通为什么登陆不了 在Delphi三层结构中如何实现传递自定义类型 在线等待!!我在W2K Ser下装Norton antivirus,可自动保护服务不能启动,为什么?? unix-遍程基础:避免僵尸进程defunc的方法有那些?欢迎参与讨论 在Delphi三层结构中如何实现传递自定义类型 关于CDaoQueryDef的SetSql语句占着内存不放 求教! 关于PB的打包问题 央视版《射雕英雄传》主题歌 ,搞笑!!! 关于BSTR的奇怪问题 国内Delphi 的最高认证是什么?一个菜鸟~走到那一步大约要花多少时间? SOS 有没有位可以捕捉到接收开始,象RI捕捉接收结束一样 JSP环境配置、软件下载。 大四女生的困惑 The C++ Programming Language(网上有购这本书的吗) 秋水,有没有见过这个好东西? Install shield怎么把不同的5组文件安装到不同目录下? 有没有哪位大哥有超时重发的源代码可供我参考一下,指个方向也行 拷光盘 很菜的问题,在线等候,谢谢! 用力压气球,气球会爆裂,打足气的自行车在阳光下暴晒也会爆破.于是提出,压强大小与那些因素有关?请提出两种猜想. 节能灯有哪些品牌,中国十大节能灯,中山节能灯,中山节能灯加工 插头在电源里着火扑灭后可以继续用电源吗 炎热的夏天,为什么自行车轮胎会爆裂? 为什么看到塑料泡泡包装就想捏? 怎么往塑料袋上喷标签 施耐德空气开关的型号 名词性从句里的用法Thinking ____you konw_____in fact you don't is a terrible mistake.(C)A that;that B what;what C that;what D what;that Why don't you bring _____to his attention that you are too busy to do it.(C)A that B what C it 答案 工人贴错了商标,塑料袋上的标签怎么能撕下来? 施耐德断路器\空气开关 EA9RN2C2030CEA9RN2C2030C 其中30C代表什么意思? 请问有关英语名词性从句的用法是什么样的? 浓盐酸的挥发出来的是什么 谁知道施耐德空气开关质量过关吗?主要应用在哪里? 高一名词性从句用法 浓盐酸挥发,到底挥发的是什么? 某物体重为0.5 N,把它放在盛有水的烧杯中,溢出0.3 N的水,则它受到的浮力A.一定为0.3 NB.可能为0.2 NC.一定为0.5 ND.可能为0.4 N 为什么是D? 施耐德空气开关有没有带缺相保护的 中国夏天最高温多少度泰国夏天高温多少度那个比较高 温度 九次方食物垃圾处理器的优势? 强力胶带粘在玻璃上被太阳晒化了,用什么能擦掉?就是市场上那种黑色的很厚的强力胶,面积相对比较大。料酒,清洁剂和醋都试过了。有的只能微溶,但是还是无法大面积的清理掉。用什 虚拟语气在名词性从句中的用法是什么? 垃圾处理器的空气开关有什么好处?有必要用空气开关吗? 灯的种类,用途还有特点. 在两个容积相同的容器中一个盛O2另一个盛CO2和N2的混合气体在同温同压下两容器内气体一定不相同的是什么 空气开关中这个东西是做什么用的? 液态氧用于化妆品有什么作用? 多少级地震会死人? 装什么东西可以让空气开关随时断电 神舟七号里用的液态氧有什么作用我认为还有供给呼吸的作用啊? 鸡翅木可以分为哪几类?它们各有什么特点? 浓盐酸的物理性质是什么.浓盐酸在常温下的物理性质. 在一真空密闭容器中,充入10mlN2和30mlH2,发生N2+H2==2NH3的可逆反应,在一定的温度下达到平衡是,H2的转化率为百分之二十五,若在同一容器中相同温度下充入NH3,欲达到平衡时各成分的百分含量与上 两性表面活性剂都有哪些? 下类属于物理性质的是A浓硫酸的腐蚀性B浓盐酸的挥发性C硝酸的酸性D碳酸的不稳定性 液态氧的作用? 从浓盐酸中挥发出来的___气体跟空气里的____接触 标准状况下,H2和CO的混合气体共8.96L,测得其质量为6.0g.试计算此混合气体中:(1)H2和CO的物质的量分别是多少?(2)标准状况下,H2和CO的体积分别是多少?在线求答!急!高一化学! 如何运用塑料袋密封包装起到保鲜作用 两性表面活性剂有那些代表物质?结构式是什么?它的用途是什么?代表物质有那些用途? 空气开关大小的选项,最好有计算方法,可举例说明 包装盒上密封塑料袋的机器是什么 两性表面活性剂和两性Gemini表面活性剂是一个意思吗 标准状况下,H2和CO的混合气体共8.96L,测得其质量为6.0g,试计算此混合气体中:①H2和CO的物质的量各为多少?②标准状况下,H2和CO的体积各为多少 Gridgen画好了网格,如何输出成Fluent能打开的格式,如.msh或者.cas 甜菜碱的起泡性咋样 怎样计算空气开关大小 喝海水会死人吗?为什么? 浓盐酸挥发后产生什么气体 标准情况下,H2和CO的混合气体工8.96L,测得其质量为6.0g,只计算此混合气体中H2和CO的质量和体积各为多少 喝啤酒能喝死人吗? 向一密闭容器中充入1mol N2 和3molH2 放出热量大于等于还是小于92.4kj 理由? 电动车上的蓄电池的原材料是什么 喝酒会喝死人吗一箱啤酒会喝死人吗 一定条件下,1mol N2与3molH2反应:N2(g)+3H2(g)2NH3(g)的反应达到平衡时,下列判断正确的是A 混合气体的总物质的量保持不变 B 混合气体的平均相对分子质量为167 C混合气体中n(N2):n(H2):n(NH3)=1:3:2 D 混合 1.下列物质分别放入一密封的充满氧气的集气瓶里,充分燃烧后,冷却至室温,由于瓶内压强的明显减小,使瓶塞最难启开的是( ).A.木炭 B.红磷 C.蜡烛 D.硫2.在庆典活动中,人们常用氮气冲灌气球 喝啤酒会喝死人吗? 经常用在商品包装减震,那种带着一个个小气泡的塑料学名叫什么呢?小时候经常捏破小气泡玩的,一般买来的带着盒子的商品都有那个东西,学名是什么呢? 关于化学空气与氧气的问题小亮发现:收集的氧气占集气瓶容积的60%(空气占40%)时,能使带火星的木条复燃.那么,使带火星的木条复燃的氧气浓度的最低值是多少呢?小亮对此展开探究:第 喝白酒会死人么? 电源插座着火了,不拔插头,就用灭火器灭火,
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘