主题:本人可以解答VC++方面的问题,有问题请进来。。。
xyjs2006
[专家分:820] 发布于 2007-01-18 11:36:00
欢迎大家在这里提问。但如果没有及时回复,请见谅。。。
另:请将问题、现象表述清楚,否则恕无法解答。
声明:本人主要提供解决方案,具体作业和代码请自行处理,谢谢。
------2007年5月14日发:
对不起,大家,近来工作繁忙,对于大家的提问没有及时解答深感抱歉。呵呵。
另:本人长期承接VC++项目(至少2000RMB以上项目),有意发邮件(在个人资料里,邮件只接受外包项目),谢谢!
呵呵,祝大家工作学习顺利!
------2008年1月18日发:
呵呵~~~这帖子发了一周年了~~~很感谢大家的支持,点击率和回帖数都是这个版面几乎最高了,呵呵~~~~~不过本人一直都比较忙,没有回答大家的问题,请见谅~~呵呵~~~
欢迎大家继续支持~~~~
最后更新于:2008-01-18 20:44:00
回复列表 (共581个回复)
41 楼
xyjs2006 [专家分:820] 发布于 2007-01-20 15:23:00
InitInstance:
发到你邮箱了。
修改之处在DrawBottomBar函数里面,你原来的代码没有用二次缓存,StretchBlt直接就帖到屏幕上。现在我加了一个内存DC,StretchBlt后先拷贝到内存DC,再贴到屏幕上。具体尺寸参数你还得自己配一下。若有同类问题类似处理。
42 楼
lgstudyvc [专家分:680] 发布于 2007-01-20 17:18:00
高人,我也给你发了,是画线问题!我也用了你说的办法,可是就是解决不了,麻烦你看看给点建议。代码很少!谢了
43 楼
玩命玩童 [专家分:0] 发布于 2007-01-20 18:13:00
不知道是不是安装的问题还是其他什么原因!!!
就这么简单的一个程序
它总说我有一个错误~!!
#include "iostream.h"
int main()
{
char a;
cout<<"输入字符:";
cin>>a;
cout<<"刚才输入的字符是"<<a<<endl;
return 0;
}
我怎么看都没看到哪里有问题的~~!!
44 楼
InitInstance [专家分:8720] 发布于 2007-01-20 18:28:00
xyjs2006大哥,我怎么也不能把hmemdcCopy 内容显示到边框上,是不是尺寸没匹配,想了一下也不知道怎么匹配才好,后来我把BitBlt改为StretchBlt也不行,下面是我画左右边框的函数:
BOOL DrawFrameBar(HINSTANCE hInstance,HDC hDC,RECT rect)
{
int nWidth = rect.right - rect.left;
int nHeight = rect.bottom- rect.top;
HDC hmemdc = CreateCompatibleDC(hDC);
HDC hmemdcCopy = CreateCompatibleDC(hDC);
SelectObject(hmemdc,hBmBordLeft); //选入内存
for(int i=0;i<nHeight;i=i+bmBordLeft.bmHeight)
{
StretchBlt(hmemdcCopy,0,i,bmBordLeft.bmWidth,bmBordLeft.bmHeight,hmemdc,0,0,bmBordLeft.bmWidth,bmBordLeft.bmHeight,SRCCOPY);
}
BitBlt(hDC, rect.left, rect.top,nWidth,nHeight, hmemdcCopy, 0, 0, SRCCOPY);
DeleteDC(hmemdcCopy);
DeleteDC(hmemdc);
return TRUE;
}
还有,你能否讲讲二次缓冲的道理?好象跟我理解的双缓冲有区别。
StretchBlt从内存DC直接拷贝到屏幕跟先StretchBlt后先拷贝到内存DC,再从另一个内存DC拷贝到屏幕有何区别?这不是增加额外开销吗?毕竟都是从内存DC到屏幕。
对xyjs2006大哥的热心帮助再次感谢。
45 楼
xyjs2006 [专家分:820] 发布于 2007-01-20 19:36:00
InitInstance:
画线问题:
在OnMouseMove里面加入如下代码:
m_bDrawRed = TRUE;
CRect rc;
GetClientRect(&rc);
rc.left = m_Point.x - 10;
rc.right = m_Point.x + 10;
InvalidateRect(&rc);
m_Point = point;
m_Point是定义的成员变量,但上面还需要InvalidateRect
自绘窗口边框:
BitBlt只能拷贝BITMAP,先从hmemdcCopy得到BITMAP,再贴到hDC上
注意:本人主要给出解决方案,具体代码问题请自行解决。
46 楼
xyjs2006 [专家分:820] 发布于 2007-01-20 19:41:00
玩命玩童:
是什么错误
47 楼
leon2008 [专家分:0] 发布于 2007-01-20 19:48:00
楼主能帮我看看我今天发的那个帖子吗
48 楼
leon2008 [专家分:0] 发布于 2007-01-20 19:51:00
或者我帮我现在的程序发到您邮箱 行吗
49 楼
leon2008 [专家分:0] 发布于 2007-01-20 20:08:00
楼主还在线吗
50 楼
InitInstance [专家分:8720] 发布于 2007-01-20 21:11:00
谢谢楼主,按你的做出来了,但感觉跟先前我的方法效果没有什么差别。可能是我那些地方没注意到,再次谢谢楼主。
我来回复