文本横向滚动的源代码?
不要MFC的,多谢!
不要MFC的,多谢!
解决方案 »
- VC6.0远程计算机截图,发送到本地计算机的问题
- 使用UNICODE后, CString的一个对象怎么转化成数字? atoi不行了.
- 求助VC编写访问ORACLE数据库的例程
- 请大家谈谈c/s软件的建模问题!要求客户端用mfc,服务端用java开发,感觉有点麻烦,现在是使用统一建模,对于各类的划分及客户端与服务器
- 关于checksum函数问题?
- CRichEditCtrl 怎么实现插入的OLE对象另存为图片
- 进程间通信问题:一个进程PostMessage,另一个进程可以用PeekMessage接受到这个消息吗?
- 有什么API可以取得鼠标光标在屏幕上的坐标
- 请大家帮忙推荐一本关于WINDOWS98/NT设备驱动程序的书
- MFC SDI窗口非客户区变花
- 如何在dll中调用calc.exe?
- 请问在DLL中能不能接受消息?如果我将dll注入到某个进程,想通过SendMessage来控制dll中函数是否可行?
但是编译时提示:
error C2065: '_CTRL_FMT_' : undeclared identifier
error C2065: 'tEF_X_MOVE' : undeclared identifier
error C2065: 'tEF_Y_MOVE' : undeclared identifier
error C2065: 'tEF_Z_MOVE' : undeclared identifier
error C2065: '_SUB_LeftTop_' : undeclared identifier
error C2065: '_SUB_RightBottom_' : undeclared identifier
error C2065: '_SUB_CTRL_FMT_' : undeclared identifier
error C2065: '_SCROLL_TEXT_' : undeclared identifier
error C2065: 'TextFont' : undeclared identifier
error C2065: 'tEF_FLOAT' : undeclared identifier
上面这些都是怎么定义的呀?[转贴]
//给你一个函数,很早以前的了,可以在一幅背景图上移动显示一个文本文件的所有内容。使用方法,先调用:ShowText( hdc, rect, szTextFileName ); 进行初始化,然后在定时器中调用ShowScrollText函数就可以了,具体的使用你可以看懂源代码在进行修改,原理差不多。typedef struct
{
unsigned long _CTRL_FMT_;
char * textBuff; //文本缓冲区,<32000个字节
HFONT TextFont; //滚动的文本字体句柄
COLORREF TextColor,TextBkColor;
int TextOffX,TextOffY;
int TextWidth,TextHigh;
int DX,DY;
HDC hBgDC; //背景DC
HBITMAP hBgBMP; //背景BMP
HDC hFgDC; //前景DC
HBITMAP hFgBMP; //前景BMP
int left,top; //显示区域的左上角坐标
int width,high; //显示区域的宽,高
RECT rect; //背景的显示区域
int dx,dy,dz; //滚动的三个方向的步进值
}_Scroll_Text_;_Scroll_Text_ ScrollText;void ShowText(HDC hdc,RECT rect, char *textFile)
{
FILE * fp;
char * textBuff;
unsigned int fileSize;
RECT bkRect; fp=fopen(textFile,"rt");
fileSize=(unsigned int)filelength(fileno(fp))+1;
if(fileSize>32000) fileSize=32000;
textBuff=malloc(fileSize);
memset(textBuff,0,fileSize);
fread(textBuff,fileSize,1,fp);
fclose(fp); CreatFont(FALSE);
if((_CTRL_FMT_&tEF_X_MOVE)||
(_CTRL_FMT_&tEF_Y_MOVE)||
(_CTRL_FMT_&tEF_Z_MOVE))
{
ScrollText._CTRL_FMT_=_CTRL_FMT_;
ScrollText.textBuff = textBuff;
ScrollText.TextColor=_SUB_LeftTop_;
ScrollText.TextBkColor=_SUB_RightBottom_;
ScrollText.TextOffX=HIWORD(_SUB_CTRL_FMT_);
ScrollText.TextOffY=LOWORD(_SUB_CTRL_FMT_); ScrollText.width = rect.right-rect.left+1;
ScrollText.high = rect.bottom-rect.top+1;
ScrollText.left = rect.left;
ScrollText.top = rect.top; ScrollText.rect.left = 0;
ScrollText.rect.top = 0;
ScrollText.rect.right = ScrollText.width;
ScrollText.rect.bottom = ScrollText.high; ScrollText.hBgBMP=CreateCompatibleBitmap(hdc,
ScrollText.width,
ScrollText.high);
ScrollText.hBgDC=CreateCompatibleDC(hdc);
SelectObject(ScrollText.hBgDC,ScrollText.hBgBMP); ScrollText.hFgBMP=CreateCompatibleBitmap(hdc,
ScrollText.width,
ScrollText.high);
ScrollText.hFgDC=CreateCompatibleDC(hdc);
SelectObject(ScrollText.hFgDC,ScrollText.hFgBMP); SetBkMode(ScrollText.hFgDC,TRANSPARENT);
SelectObject(ScrollText.hFgDC, ScrollText.TextFont); BitBlt(ScrollText.hBgDC,0,0,ScrollText.width,ScrollText.high,
hdc,rect.left,rect.top,SRCCOPY); _SCROLL_TEXT_=TRUE;
}
else
_SCROLL_TEXT_=FALSE; SetBkMode(hdc,TRANSPARENT);
SelectObject(hdc, TextFont);
if(_CTRL_FMT_&tEF_FLOAT)
{
bkRect.left =rect.left +HIWORD(_SUB_CTRL_FMT_);
bkRect.top =rect.top +LOWORD(_SUB_CTRL_FMT_);
bkRect.right =rect.right +HIWORD(_SUB_CTRL_FMT_);
bkRect.bottom =rect.bottom +LOWORD(_SUB_CTRL_FMT_); SetTextColor(hdc,_SUB_RightBottom_);
DrawText(hdc,textBuff,-1,&bkRect,DT_LEFT|DT_NOPREFIX);
SetTextColor(hdc,_SUB_LeftTop_);
DrawText(hdc,textBuff,-1,&rect,DT_LEFT|DT_NOPREFIX); ScrollText.TextHigh=DrawText(hdc,textBuff,-1,&rect,
DT_LEFT|DT_NOPREFIX|DT_CALCRECT);
ScrollText.TextWidth=rect.right;
}
else
{
SetTextColor(hdc,_SUB_LeftTop_);
DrawText(hdc,textBuff,-1,&rect,DT_LEFT|DT_NOPREFIX);
ScrollText.TextHigh=DrawText(hdc,textBuff,-1,&rect,
DT_LEFT|DT_NOPREFIX|DT_CALCRECT);
ScrollText.TextWidth=rect.right;
}
if(!_SCROLL_TEXT_)
{
DeleteObject(TextFont);
free(textBuff);
}
}void ShowScrollText(HWND hWnd)
{
HDC hdc;
RECT bkRect; hdc=GetDC(hWnd);
BitBlt(ScrollText.hFgDC,0,0,ScrollText.width,ScrollText.high,
ScrollText.hBgDC,0,0,SRCCOPY); ScrollText.DX+=ScrollText.dx;
if(abs(ScrollText.DX)<ScrollText.TextWidth)
ScrollText.rect.left+=ScrollText.dx;
else
{
ScrollText.DX=
ScrollText.rect.left=0;
} ScrollText.DY+=ScrollText.dy;
if(abs(ScrollText.DY)<ScrollText.TextHigh)
ScrollText.rect.top +=ScrollText.dy;
else
{
ScrollText.DY=
ScrollText.rect.top=0;
}// SetBkMode(ScrollText.hFgDC,TRANSPARENT);
// SelectObject(ScrollText.hFgDC, ScrollText.TextFont); if(ScrollText._CTRL_FMT_&tEF_FLOAT)
{
bkRect.left =ScrollText.rect.left +ScrollText.TextOffX;
bkRect.top =ScrollText.rect.top +ScrollText.TextOffY;
bkRect.right =ScrollText.rect.right +ScrollText.TextOffX;
bkRect.bottom =ScrollText.rect.bottom +ScrollText.TextOffY; SetTextColor(ScrollText.hFgDC,ScrollText.TextBkColor);
DrawText(ScrollText.hFgDC,ScrollText.textBuff,-1,&bkRect,DT_LEFT|DT_NOPREFIX);
SetTextColor(ScrollText.hFgDC,ScrollText.TextColor);
DrawText(ScrollText.hFgDC,ScrollText.textBuff,-1,&ScrollText.rect,DT_LEFT|DT_NOPREFIX);
}
else
{
SetTextColor(ScrollText.hFgDC,ScrollText.TextColor);
DrawText(ScrollText.hFgDC,ScrollText.textBuff,-1,&ScrollText.rect,DT_LEFT|DT_NOPREFIX);
} BitBlt(hdc,ScrollText.left,ScrollText.top,ScrollText.width,ScrollText.high,
ScrollText.hFgDC,0,0,SRCCOPY);
ReleaseDC(hWnd,hdc);
}