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

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

编辑:说三道四文库 发布时间:2017-03-28 02:42
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()中发消息让所有控件变透明
应用程序敏感键的实现-Delphi资料 用Delphi 4.0 设 计 新 型 界 面 用Delphi 实 现 自定 义 颜 色 对 话 框 及 其 构 件 用Delphi 实现自定义颜色对话框及其构件 用Delphi4实现风Word97风格的工具栏 用Delphi 开 发windows 屏 幕 保 护 预 览 程 序 用Delphi设置墙纸 用DELPHI实现无边界窗体的移动 用Delphi实现自定义颜色对话框及其构件 用DEPHI 3.0实现动画ABOUT窗口-Delphi资料 用鼠标拖动无标题窗口-Delphi资料 在Delphi编程中创建一个启动闪现窗口 在form中想用enter来代替tab,请问如何实现?-Delphi资料 在Listboxes中加背景图-Delphi资料 在Window右下角的添加图标-Delphi资料 在程序中使用自定义的鼠标-Delphi资料 怎样建立简单的任务栏应用程序-Delphi资料 增强DelphiTStatusBar控制 制作Delphi的竖排标签 自适应表单的实现-Delphi资料 COM/DCOM的区别与联系-Delphi资料 CoolBar上控件的排列顺序-Delphi资料 Delphi 4 WebBroker Delphi 中自做动态显示的控件 Delphi3的DBGrid中的下拉列表和查找字段编程方法 DELPHI常见问题 Delphi的竖排标签 DELPHI构件制作方法 DELPHI控件Tweblabel的编制 DELPHI中MEMO组件的光标定位 Delphi中RichEdit的奥妙 JAVA初学者:请问在那里可以下载到JAVA的原代码? 关于动态报表的制作,老话重提! KeyDown消息响应函数如何获得不同的键值 哪儿可以找到c++builder 企业版补丁的下载,谢谢 关于msi,急,只是为了玩魂斗罗 动态二维数组 怎样让JBuilder括号对齐?还有让光标位置在字符后? 有没有编写脚本解释器的经典文章 动态二维数组 如果用好 DELPHI 的TDBChart 控件?(有源代码最好!) 关于数据窗口控件editchanged事件中光标的问题。 asp怎样和flash沟通? 请教FormatDateTime()函数的参数,怎样去定义日期格式? 大家帮帮忙吧:我有个朋友,他开服装的,他要个店名,他买的是年轻人的衣服,有什么好建议嘛? bcb打包发行至少要带哪些文件? 请问PB中如何新建一线程以运行其他程序 为什么定义变量的时候总是出错? 请问可不可以在forward指令中携带参数 怎样实现声音的迭加处理? clientsocket那个属性是返回本地的ip地址的 我发现一个人怪现象,这里人都知道lotus c++ api ,但没有一个人会用它编程序,可悲 请问现在网吧都用什么上网?DDN,ISDN?那个比较快一些? 在WIN95下怎么注册COM DLL?? TEdit中Text是属性,能否在TMyEdit中重载它的读写方法? 在WIN95下怎么注册COM DLL?? 如何在vb中调用vc编好的dll文件? 关于网络传输字符的问题 生成曲线图的图形控件 谢谢 用netmeeting SDK开发视频监控系统遇到的问题 大出血,放分 ??? 我发现这里有一个怪现象,这里人都知道lotus c++ api ,但没有一个人会用它编程序,可悲 jeckel我也要那个文档,快快快…… 为什么不能调试????? ==如何用Insert语句直接向Oracle的表中插入jpg文件??=== GIS初学,不知道从何下手。请教众大虾! 怎样快速获得一个文件的句柄??? 选中ListView控件中的Item后在Memo中出现相对应的内容,怎么做?? 如何通过程序来访问各种类型的数据库又不用ODBC?因为要求跨平台。 在线的进来问点问题(jsp/javabean), 实在没分了不好意思其它帖子中送出了 请问如何将一个CString 转到一个 char 的数组中 各位大侠!推荐几个学习linux的网站吧! 还是关于classpath的问题,请大家教我,从头教起吧,谢谢 关于想得到刚刚保存的行的问题 socket不能连接,“目标机器积极地拒绝它 如何用applet显示服务器的系统时间? to:jeckel 如何在TREEVIEW中改变所选结点时在框架的另一个FRAME中调用某个页面? ASP中数据集的操作 猪啊猪,气死我了 capboy 请你看一下“capboy:为什么我加入了memfile.h后编译回出这样的错误”,后面有新问题,我的分快没了,谢谢! 等腰三角形的一腰长为2cm,面积为1平方厘米求顶角的大小 用大、小卡车往城市运送29吨蔬菜,大卡车每次运5吨,小卡车每次运3吨,小卡车每辆每次运3吨,大、小卡车共用7辆车一次将这批蔬菜运完.大、小卡车各用多少辆? cad测量图纸距离带图CAD怎么拉图纸距离得到数值 等腰三角形顶角是120度,底边上的高是3,则腰长为多少厘米? 1个等腰三角形底和高的比是8比3,把它沿底边上的高剪开,拼成一个长方形,这个长方形的面积是192平方米.求长方形周长! 2008年底有绿化面积300公顷 经过2年绿化 2010年底增加到363公顷 求平均每年增长率方程只要方程就行 等腰三角形的面积是48平方厘米;,底边上的高为6cm,腰长为?(急.) 一个等腰三角形底和高的比是8 3,把它沿底边上的高剪开,拼成一个长方形,这个长方形的面积是192平方厘米 一个无盖的长方体木箱,从外面量长是6分米,宽是4.2分米,高是3.2分米.如果用厚1厘米的木板做这个木箱,木箱的容积是多少升?(列一下公式) 平行四边形ABCD的对角线AC、BD相交于点O,△AOB是等边三角形,AB=4cm,求这个平行四边形的面积. 一条路全长2400米,已修了六分之五,一共修了几米?求方程 一个长方体的木箱,长84分米,宽54分米,高34分米,木板厚2分米,这个木箱的容积是多少? 修一条3千米长的公路,第一次修了这条公路的1/2,第二次修了1/3千米,两次共修多少千米? 甲乙丙三个工程队共修一条路修完这条路甲与乙修路的米数比是3:5,丙修的是甲的六分之五 1.如果要修的路全场750米,那么甲乙丙三个工程队各修路多少米?2.如果甲和乙共修路180米,那么这条要 CAD图中比例是1:500的,di量出来的长度是原长度吗?与1:100的有什么不同么? 已知平形四边形ABCD的对角线AC和BD相交与,如果三角形AOB的面积是5,则平行四边形ABCD面积是多少?SOS 要交的 我还想好好地活着啊 小小年纪我不会想不开的 可是.这题对于你们来说应该很简单 所 一块0.2公顷的长方形试验田,它的长是80米,求它的宽一辆汽车的外轮胎直径是9分米,车轮每分钟滚动1000周,这辆车每小时前进多少千米?在长1.8米,宽1.2米的纸板上,你能截出几个半径为30厘米的圆 cad两张图纸里的图形用di量,长度是一样的,但复制到一张图里就一大一小,用di测显示的大小还是一样,怎么 已知平行四边形ABCD的对角线AC,BD相交于点O,如果三角形AOB的面积是3,求平行四边形ABCD的面积 农科院有一块0.2公顷的长方形试验田,长80米,宽是多少米? cad里指定第一个矩形倒角的距离是什么意思?指定第二个呢?哪个是指长度上的?哪个指宽度上的? 已知平行四边形的对角线AC,BD交于点O,三角形AOB的面积为2,那么平行四边形ABCD的面积为? 一种用铁皮制成的圆柱形汽油桶,底面直径为6分米,高为8分米.一种用铁皮制成的圆柱形汽油桶,底面直径为6分米,高为8分米.(1)求这个汽油桶的容积.(2)如果每立方米汽油桶重0.75千克,则这 一个无盖长方体木箱,已知木板得厚度是1厘米,长5.2分米,宽8.7分米,1分米求这个木箱的体积和容积 求提供初三物理《短路》电路图,基础一点的,复杂的也要几个, 关于滑轮组有关绳子段数省力情况和动力 绳子移动的速度之间有什么关系? CAD中测量长度的命令是DI还是BI? 一个等腰三角形底和高比8:3沿高剪开拼成长方形长方形面积192平方CM长方形周长( )CM.怎样计算请那位大虾告诉计算过程 滑轮中绳子的自由端的速度和被吊起的物体移动的速度的关系是怎样的? CAD中!di是检验长度的指令,请问检验角度和圆弧半径的是什么指令?小弟万分感谢... 一个等腰三角形底和高的比是8比3把它沿底边上的高剪开,拼成一个长方形,这个长方形的面积是192,长方形的周长是 用如图所示的滑轮组提升重物,要求绳子自由端移动的速度是物体上升速度的3倍,请在图上画出绕线方法 如图,在△ABC中,DE是边BC的垂直平分线,与边AB、BC交于D、E,如果△ACD的周长为17cm,△ABC的周长是25cm根据这些条件,你可以求出哪些险段的长?请分别求出来 一个等腰三角形底和高的比是8:3,把它沿底边上的高剪开,拼成一个长方形,这个长方开面积是192平方厘米,方形的周长是( )厘米? 修一条2分之5千米长的公路第一天修了4分之3千米,比第2天多修8分之1千米第2天修了多少千米两天共修几千米 如图,三角形abc中边bc的中垂线交ab于点d,如果三角形acd的周长为17cm,三角形abc的周长为25厘米,你能求出那条线段的长? 一个等腰三角形的底和高的比是8:3,把他沿底边上的高剪开,拼成一个长方形这个长方形的面积是192,求周长那个好人来帮忙啊 一条公路,第一天修全长的4分之1,第二天修全长的3分之1,两天共修120千米,这条公路长几千米? 在△ABC中,DE是边BC的垂直平分线,与边AB、BC交与点D、E,如果△ACD的周长为17cm(下△ABC的周长是25cm,根据这些条件,你可以求出那些线段的长? 一个等腰三角形底和高的比是8:3,把它沿底边上的高剪开,拼成一个长方形,这个长方形的面积是192平方厘米长方形的周长是多少厘米? 修一条长2000米的公路,第一天修了全长的5分之1,第二天修了全长的4分之1,两天共修多少米? 如图,三角形ABC中边bc的中垂线交ab于点d,如果三角形ACD的周长为17cm三角形ABC周长为25cm根据这些条件,你可以求出哪条线段的长? 一条公路长10米,第一次修了四分之一,第二次又修了四分之一,两次共修( )千米,还剩( )一条公路长10米,第一次修了四分之一,第二次又修了四分之一,两次共修( )千米,还剩( )千米. 一个无盖的小木盒从外面量长10厘米,宽8厘米,高5厘米,木板厚一厘米.做这个木盒要用一厘米厚的木板多少容积是多少? 一名工人用如图所示的滑轮组 提起450N的重物……一名工人用如图所示的滑轮组 提起450N的重物,重物在5s内匀速上升了1m,动滑轮重50N,不计绳重及摩擦.求:(1)绳的自由端A点下落的速度;( 一条公路长10千米,第一次修了四分之一,第二次俢了四分之一千米,两次共修了()千米,还剩()千米. 一方有难,八方支援,在今年4月雅安发生地震后,我市积极响应市政府的号召,组织20辆汽车装运食品、药品、生活用品三种救援物资共100吨到灾区安置点,按计划20辆汽车都要装运,每辆汽车只能 AB=AC,AB的垂直平分线MN交AC于点D,且AB=15cm,三角形BDC周长是25cm,求BC的长、 如图,BE平行于四边形ABCD的对角线AC,从图中找出和四边形ABCD面积相等的三角形,并给出证明.http://hi.baidu.com/%BA%CD%BF%AA%BF%AA%BF%AA%BF%AA%BF%AA/album/数学题图图片在这里 一条公路长10千米,第一次修了41,第二次又修了41千米,两次共修了( )千米,还剩( )千米没有修6点30之前要否则无效还有为什么 “做一个无盖木箱用多少木板,是求长方体的表面积”对吗?这是一道判断题,说说理由. 四边形ABCD,AC、BD两对角线相交于O点,三角形AOB的面积是4,COD的面积是9,求四边形ABCD的最小面积 用载重7吨和载重4吨的卡车拉煤,50吨煤一次拉完,问大卡车和小客车各有几辆 某帐篷生产厂计划四月份生产一批帐篷,生产了20天后,四川雅安发生地震,为了支援灾区,该厂接上级指示,要求四月份帐篷的生产总量比原计划增加20%,该厂迅速加派人员组织生产,实际每天比 等腰三角形顶角为120度,腰长为6cm,那么这个三角形的面积为____平方厘米 用大小卡车运29吨蔬菜,大卡车每辆每次运5吨,小卡车每辆每次运3吨.大小卡车共用7辆车一次将这批蔬菜运完.大小卡车用多少辆? “一方有难,八方支援”是我们中华名族的传统美德.当四川雅安发生7.0级地震之后,我市迅速调集了1400顶“一方有难,八方支援”是我们中华名族的传统美德.当四川雅安发生7.0级地震之后,我市 等腰三角形的顶角为120度.底边上的高等于3厘米.则腰长几厘米 一个等腰三角形,底与高的比是8:3,把它沿底边上的高剪开,拼成一个长方形,这个长方形的面积是192平方厘米,长方体的周长是多少厘米? cad中测量命令di显示的是xy轴的增量怎样转化为一段距离
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘