| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1811 人关注过本帖
标题:对话框中添加位图的问题
只看楼主 加入收藏
圆圆的鸟蛋
Rank: 1
等 级:新手上路
帖 子:216
专家分:0
注 册:2007-4-22
收藏
 问题点数:0 回复次数:9 
对话框中添加位图的问题
写了个函数,用来在对话框中添加一幅位图,如下:
void InitLogoBTM(HWND hWnd)
{
    HDC hDC = GetDC(hWnd);
    HDC hComDC = CreateCompatibleDC(hDC);
    hBtm = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BTM_LOGO));
    SelectObject(hComDC, hBtm);
    StretchBlt(hDC, 0, 0, 40, 80, hComDC, 0, 0, 40, 80, SRCCOPY);
    ReleaseDC(hWnd, hDC);
    DeleteDC (hComDC) ;
}
但是,不成功 。。请高手看看是怎么回事!!(不使用MFC,我是直接调用API写的)。。
谢谢了!!
搜索更多相关主题的帖子: 位图 对话框 
2007-12-10 10:54
rocketabc
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2006-7-6
收藏
得分:0 
是不是你调用 函数的地方不对呢?

兴趣和爱好是我追求的方向
2007-12-10 19:43
rocketabc
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2006-7-6
收藏
得分:0 
我用你的方法是可以显示的啊

switch(message)
            {
                case WM_PAINT:
                      /* PAINTSTRUCT ps;
                       HDC hdc = ::BeginPaint(m_hWnd,&ps);
                       ::DrawText(hdc,"111111",10,&rctA,DT_LEFT);
                       ::  EndPaint(m_hWnd,&ps);*/
                    HDC hdc=::GetWindowDC(m_hWnd);
::DrawText(hdc,"111111",10,&rctA,DT_LEFT);
SetMapMode(hdc,MM_TEXT);

HBITMAP hBtm;


    HDC hComDC = CreateCompatibleDC(hdc);
    hBtm = LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BTM_LOGO));
    SelectObject(hComDC, hBtm);
    StretchBlt(hdc, 20, 20, 40, 80, hComDC, 0, 0, 40, 80, SRCCOPY);
   // ReleaseDC(hWnd, hDC);
    DeleteDC (hComDC) ;

兴趣和爱好是我追求的方向
2007-12-10 20:10
圆圆的鸟蛋
Rank: 1
等 级:新手上路
帖 子:216
专家分:0
注 册:2007-4-22
收藏
得分:0 
我在WM_INITDIALOG消息下添加的,,但是总显示不出来!

鸟蛋开始孵化。。。我等待那一天Forever。。
2007-12-10 21:26
rocketabc
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2006-7-6
收藏
得分:0 
。。。。。。。。 应该在 响应WM_PAINT 消息的地方添加

兴趣和爱好是我追求的方向
2007-12-10 23:10
圆圆的鸟蛋
Rank: 1
等 级:新手上路
帖 子:216
专家分:0
注 册:2007-4-22
收藏
得分:0 
显示倒是能显示了,但是一移动窗口,位图有时候就不见了 ,,这个又是什么原因呢??
另外,为什么不能在WM_INITDIALOG消息下添加呢??

鸟蛋开始孵化。。。我等待那一天Forever。。
2007-12-11 07:32
圆圆的鸟蛋
Rank: 1
等 级:新手上路
帖 子:216
专家分:0
注 册:2007-4-22
收藏
得分:0 
太奇怪了,如下面:
case WM_PAINT:
        InitLogoBTM(hDlg);
        return FALSE;
当我这样写的时候,图片显示正常。。但将最后的FALSE改为TRUE之后,,图片就会在移动窗口的时候消失,而且当对话框被其他窗口遮住又再显示出来的时候,所有控件都消失了。。

我想问的是:对话框重画的过程是怎样的??

鸟蛋开始孵化。。。我等待那一天Forever。。
2007-12-11 12:47
rocketabc
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2006-7-6
收藏
得分:0 
这个是窗口重画问题 很简单 你自己看看就知道了啊

兴趣和爱好是我追求的方向
2007-12-12 09:34
圆圆的鸟蛋
Rank: 1
等 级:新手上路
帖 子:216
专家分:0
注 册:2007-4-22
收藏
得分:0 
嗯! 好,, 谢谢rocketabc关注和帮助啊

鸟蛋开始孵化。。。我等待那一天Forever。。
2007-12-12 09:49
赵博闻
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2007-9-20
收藏
得分:0 
WM_Pait 一般比initdialog早执行所以你在初始化时画位图其实是把一个位图往已经存在并生成完毕的对话框上加载当然提不上去了。
如果移动对话框就会引起重绘的

2007-12-14 15:17
快速回复:对话框中添加位图的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018932 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved