在vc.net动态的创建了按钮(在CTreeCtrl里面),点一下,调用gdi+画一个图,然后再把这图贴到该按钮上。但就是贴不上去,如果我是调用之前在资源里面画好的BITMAP,就可以显示了~~
不知道怎么回事。搞得我郁闷得很。。各位大虾看看~(CButtonST相信大家都知道吧。。)
viod mytree::drawbitmap()
{
Bitmap bit(70,70);
Graphics *g=Graphics::FromImage(&bit);
Pen pen(Color::Red,3);
g->DrawLine(&pen,10,10,70,70);
HBITMAP hBit;
bit.GetHBITMAP(RGB(255,255,255),&hBit); CButtonST* m_Press;
m_Press=(CButtonST*)CButtonST::FromHandle(GetFocus()->GetSafeHwnd());
m_Press->SetBitmaps((hBit,RGB(255,255,255)); //IDB_QQ,NULL
}
能通过编译,但是执行的时候就会报错,不知道GDI+画的图为什么不能在TREE里面动态的加载呢?我朋友用在View类上貌似可以显示的。。事把这段代码的gdi+部分注释掉。。
换成
CButtonST* m_Press;
m_Press=(CButtonST*)CButtonST::FromHandle(GetFocus()->GetSafeHwnd());
m_Press->SetBitmaps(IDB_QQ,NULL); //就可以了显示IDB_QQ
不知道怎么回事。搞得我郁闷得很。。各位大虾看看~(CButtonST相信大家都知道吧。。)
viod mytree::drawbitmap()
{
Bitmap bit(70,70);
Graphics *g=Graphics::FromImage(&bit);
Pen pen(Color::Red,3);
g->DrawLine(&pen,10,10,70,70);
HBITMAP hBit;
bit.GetHBITMAP(RGB(255,255,255),&hBit); CButtonST* m_Press;
m_Press=(CButtonST*)CButtonST::FromHandle(GetFocus()->GetSafeHwnd());
m_Press->SetBitmaps((hBit,RGB(255,255,255)); //IDB_QQ,NULL
}
能通过编译,但是执行的时候就会报错,不知道GDI+画的图为什么不能在TREE里面动态的加载呢?我朋友用在View类上貌似可以显示的。。事把这段代码的gdi+部分注释掉。。
换成
CButtonST* m_Press;
m_Press=(CButtonST*)CButtonST::FromHandle(GetFocus()->GetSafeHwnd());
m_Press->SetBitmaps(IDB_QQ,NULL); //就可以了显示IDB_QQ
解决方案 »
- WM_CHAR里,LOBYTE(0xd6d0)和HIBYTE(0xd6d0)中,可以把wParam替换0xd6d0吗?
- sdk调用mfc dll 自动退出、、、求抱大腿、、、
- 收集死机代码
- CRichEditCtrl 滚条和文本显示同步的问题?
- 奇怪的问题?“Microsoft Visual C++ Runtime Library ”
- VisualC++6.0已经过时了吗
- delphi调用VC创建的dll问题(100)
- 我在一程序的lib和h文件,调用时出错,请高手帮忙!
- 我问了两个问题,至今无人回答,帮帮我吧!
- 怎样将我的TopMost窗口放在所有TopMost窗口之上
- CListCtrl中的项被选中是发送什么消息?
- 如何获取纯资源Dll中字符串的地址
如果要把按钮作为CDC。。似乎不好处理呀
你这个Bitmap bit(70,70)是临时变量,drawbitmap()一结束就销毁了,不管你以前画了什么,也不可能保存下来,更何谈显示?Bitmap *bit=new Bitmap(70,70);
也不是好主意,什么时候删除呢?所以最好还是用资源来做。