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

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

编辑:说三道四文库 发布时间:2017-11-23 03:26
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()中发消息让所有控件变透明
仅有纽扣大小的开发板 Intel Curie “撒娇”的豌豆荚?被百度手机助手屏蔽太糟心! 【工具推荐】Pgcli—自动完成和语法高亮的Postgres命令行工具 CES 2015:挑一款机器人带回家? 夜行、睡眠与健康:CES 2015十款酷炫的可穿戴产品 Java 9中新的货币API 唯“简”不破,Apple Watch App的设计之道 Google Glass从X labs“毕业”,更换项目负责人 不进化,则消亡——互联网时代企业管理的十项实践 RedMonk 2015年1月编程语言排行榜:进击的Swift! 微信开放JS SDK,这场web巨变意味着什么? 盘点一些iOS开发技巧:Swift和Objective-C 2014年,那些“颜值”爆表的UI动画 《近匠》爱加密:谁说iOS应用不需要保护? SwiftColorArt:开源易用的Swift图片类库 人气爆棚 干货满满 中国电信天翼开放平台开放日圆满落幕 必须Mark!43个优秀的Swift开源项目推荐 治拖延、疗懒癌!安利12款提高工作效率工具 把ES6带进Node社区 Io.js 1.0.0正式发布 Java 2014:10个最热门、最具争议性的话题 回顾:2014年最流行前端开发框架对比评测 实例讲解SQL注入攻击 调试大规模服务器集群的五大策略 .NET编译平台Rosly将迁移到Github Wasai虚拟现实头盔与体验馆发布:虚拟现实的线下经济 订票系统不再瘫痪 阿里云确认与12306合作 Apple前工程师Warren Moore:Swift中Metal使用初体验 手把手教学:详解Swift中的iOS设计模式 见微知著,那些触动人心的应用细节设计(一) 设计优秀API七大要诀 需求 细节 BI项目成功的五大要素 如何将JSP页面中的报表放进WORD里打印! 请问如何编成实现创建ORACLE数据库? SQL语句写法 有关数据库的别名!各位多多指教! 急救 请问各位大虾,关于Outlook Express和VB.NET! ?@@@ 关于static_cast、dynamic_cast的问题 @@@ 各位老师,我在重新验证用户标识符时,出现错误信息(entry not found in index),请问该如何修正? 请教,请教 那位仁兄告诉我org.jdom包那里有啊? 〓〓>===→ 请问,datagrid移动到别的记录之前会触发什么事件? up也给分。 希望大家指点! 小弟打算学JSP不知买哪本书比较适合初学者(小弟学过Servlet) 请帮忙解决这个问题 高分帖,很简单,告诉我,我就结帖。 高分求助!线程怎么用啊,我加了一个thread object对象,怎么启动这个线程啊,是在别的unit里面启动吗?谢谢 编译错误,怪事! 求助啊!在线等待~~~~~~~~~ 远程连接 SQL server XML数据交换技朮? 如果数据库用的是SQL Server2000,怎么做安装文件,高分!!! 如何用VB实现telnet到一台UNIX机器 使用第三方控件LsFileExplorer28,编译出错! ***怎么实现跟SQL Server中compute by类似的查询?就是先查出所有信息,最后进行统计。详情请进!*** 如何让单元格直接进入编辑状态? 如何用ADOQUERY返回的数据集中某一字段的返回值中最长的值定义其column列的宽度? 一个与时间有关的问题 为什么我的Form的图标不变 安装传奇补丁的问题,文件夹已满????????????? 求Max232\Max485资料和c51及汇编例程 在Notes中,怎樣將查詢得到的符合條件的文檔中的計算字段的值加總列印或保存起來? 看了这个,我真的害怕了!--〉天下原本就没有“真美女” (急)如何从OCX的弹出FORM,返回参数给USERCONTROLL,500分即送。 这样写那里错了? 还原精灵问题,高手请进 一个关于短信开发的数据库设计问题,高手指点。。。。 请解释一下控件的工作原理,ActiveX控件和*.ocx文件是一回事吗?如果我有一个VB调用相关控件的系统,我要转成ASP的B/S结构,应该怎么做? 关于bho的问题 ,, at指令的问题,高手看过来! 对侯捷所译C++ Primer题解中,第208页10.5(c)题答案分析的疑问?(函数模板) Windows 2000下找不到samba服务器,高手指点! AD和額外域控制器的角色轉換 两个问题? 请教大家如何从另外一个程序往一个dx的游戏上写字?? asp程序取sql存储过程返回参数的问题 初学c++,请教 加权平均分 如何快速的判断文件是否存在? 问一个软件!!! 98的提示符下加载哪个命令可以出现中文? 关于C的疑惑 下面对话中小王的理解对不对?为什么?师、生都对小王说:我明天上午8点上课.小王:你俩说的不是一个意思吗?__________________ 模棱两可 放虎归山 业精于勤 本末倒置 人言可畏 事半功倍 的反义词是什么 完成句子,填空.1.最近我们学校开通了一条家长热线.Our school ___ ___ a call-in center for parents recently.2.你给我们提出的建议效果显著.The advice that you gave us ___ ___ ___.3.你想的那个计划很有用,我现在 填空完成句子1.What()your brother () in the evening?He watches TV at home.2.Do you like () a little longer in the morning?3.He() on his jacket and goes to work. 完成句子填空 什么是封建领主, 梁山好汉为什么服宋江 蒙娜丽莎是一幅世界著名的油画,出自达芬奇之手用英语怎么说我不知道这种图案是否适合我的窗帘用英语怎么说 14.在选择谈判场地时,下列说法不正确的是:A 在球场谈判,需要了解对方的心理,决定是否赢球 B 在餐厅谈判,酒酣耳热之际容易达成协议,因此是谈判场地的首选 C 和日本人谈判,卡拉OK厅是较好 美国监听行为激怒欧盟 欧盟各国首脑纷促政府兑现修路承诺 小镇妇女性罢工拒美国19岁学生欲徒步闯南极 14岁曾瑞典家具商为索马里难民提供塑料屋 手日本茨城县一金属加工厂爆炸 两员工严专家:消费升级人口基数大 中国车市仍美国北卡州狂欢活动发生意外事故 致5欧盟主席谈隐私 被称暗示美国搞监视是挪威拒绝美国请求 将不接收销毁叙利亚克里叹美政府关门损形象 他国外交官欲德一男子拒绝受审持枪劫持12名亲友终马修·麦康纳有望成就大满贯须显著公示美“最帅警察”传递正能量即时录音冯原:中国当代艺术观念探索不足六栋11层高的住宅旁,路陷!以军空袭升级,加沙球迷看世界杯时被炸不办正事阿根廷总统爽约决赛财富大讲坛下期预告意大利人执法决赛
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘