当前位置:编程学习 > VB >>

关于在TextBox插入图片的问题!

在TextBoxt上绘画如四方形,圆形等,都可以通过
hdc=GetDC(textBox1.HWND)
Ellipse hdc,100,100,300,300来绘一个圆。


请问TextBox在用GetDC取得DC后怎用API插入一个图片???? 大概的过程:
HDC hdc = GetDC(hWnd);//获取当前的显示设备上下文

HBITMAP bitmap;//图象句柄

//从硬盘下载图片

bitmap = (HBITMAP)LoadImage(NULL,"bg.bmp",IMAGE_BITMAP,with,height,LR_LOADFROMFILE);

//从资源文件中下载图片

//bitmap=LoadBitmap (g_hInstance,MAKEINTRESOURCE(IDB_BITMAP)); 

HDC  hdcsource  = CreateCompatibleDC(NULL);//创建存放图象的显示缓冲

SelectObject(hdcsource,bitmap);    //将位图资源装入显示缓冲

BitBlt(hdc,x,y,with,height,hdcsource,x,y,SRCCOPY);//将图象显示缓冲的内容直接显示到屏幕

ReleaseDC(hdc);



不过直接用RichTextBox比较好。因为你要考虑重绘、文本框文本的水平、垂直滚动、插入点光标等等很多东西。 先试一下先谢谢你 是哦,考虑一下RichTextBox吧,你这个需求确实有些特别,让我想起如codesmart那类在编辑器里作图等辅助编辑的功能。 要图文混合,明显应该用RichTextBox。
TextBox 只支持文字的。无论你用什么API去画,那个“图片”始终不会“占位”。

你要想在TextBox中实现“图片占位”的效果,那不是一般的麻烦。
除非显示的内容很少,并且“格式”固定,那么还有可能通过一些方式来计算,用空格把位置给它补出来。
引用 4 楼 Chen8013 的回复:
要图文混合,明显应该用RichTextBox。
TextBox 只支持文字的。无论你用什么API去画,那个“图片”始终不会“占位”。

你要想在TextBox中实现“图片占位”的效果,那不是一般的麻烦。
除非显示的内容很少,并且“格式”固定,那么还有可能通过一些方式来计算,用空格把位置给它补出来。


没试过,但估计能通过子类化攫取WM_PAINT消息,将图片BitBlt后,再调用原窗口过程,完成文字打印
引用 5 楼 worldy 的回复:
Quote: 引用 4 楼 Chen8013 的回复:

要图文混合,明显应该用RichTextBox。
TextBox 只支持文字的。无论你用什么API去画,那个“图片”始终不会“占位”。

你要想在TextBox中实现“图片占位”的效果,那不是一般的麻烦。
除非显示的内容很少,并且“格式”固定,那么还有可能通过一些方式来计算,用空格把位置给它补出来。


没试过,但估计能通过子类化攫取WM_PAINT消息,将图片BitBlt后,再调用原窗口过程,完成文字打印

这种情况,图片应该就是TextBox的“背景”吧,文字很有可能是覆盖在图片上的。

当然,如果楼主要的就是这样的效果,自然没话可说了。
补充:VB ,  API
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,