VC编辑框(EDIT)实现的自动换行、自动滚屏 、自动清空

100 篇文章 0 订阅
28 篇文章 0 订阅

在自动换行设置的时候,要在EDIT控件的属性中选中"multiline"的属性和Auto_HScroll、Vertical scroll。

经过多次测试,总结出VC编辑框(EDIT)的自动换行与自动滚屏的方法。

方法一: (当EDIT映射到一CString时)
m_String = m_String + sNewString + "\r\n"   

//自动换行(其中m_String是EDIT筐所关联的CString对象)
UpdateData(false);

此法只能做到自动换行,不会自动滚屏到最后一行。

方法二: (当EDIT映射到一EDIT时)
m_Edit.SetSel(-1, -1);       //自动滚屏(其中m_Edit是EDIT筐所关联的EDIT控制对象)
m_Edit.ReplaceSel(sNewString+"\r\n");    //自动换行

此法可以做到自动换行,并自动滚屏到最后一行。

以上,m_String、m_Edit.分别为给编辑框添加的成员变量;sNewString 为要显示的字符串

方法三: 到200行时将所有内容清空

int iLineNum=m_EditLog.GetLineCount();
     if(iLineNum<=200)
     {
      m_EditLog.SetSel(-1, -1);
      m_EditLog.ReplaceSel(str+"\r\n\r\n");
     }
   
     else
     {
      m_EditLog.SetSel(0, -1);
      m_EditLog.Clear();
    
     }

取自msdn

void SetSel( int nStartChar, int nEndChar, BOOL bNoScroll = FALSE );

Parameters

nStartChar

Specifies the starting position. If nStartChar is 0 and nEndChar is –1, all the text in the edit control is selected. If nStartChar is –1, any current selection is removed.

nEndChar

Specifies the ending position.

http://www.pcming.com/studio/showart.asp?id=443

----------------------------------

------------------------------------------------------

VC中EditBox怎么自动清空???http://topic.csdn.net/u/20080311/16/70b6c4af-0a1f-418c-b4d0-bb336ababb9b.html

--------------------------------------------------------

【MFC】关于EditBox中滚动条定位问题
一般来说,如果EditBox中的内容是静态的,那么可以根据属性很容易地滑动滚动条。
   (对于Dialog 来说可以设置其属性)
   但是,如果EditBox中的内容是动态刷新的,那么每一次refresh后,滚动条(无论是水
平的,还是垂直的)都会重新定位在开始的位置。
    所以,如果想要让每次刷新时,滚动条的位置保留不动,那么就需要作些处理。
-------------------------------------------------------------------------
例如:
//计时器,让它每隔一定时间就刷新一次EditBox中的内容。
void XXX::OnTimer(UINT_PTR nIDEvent)
{
        //设定要输出的内容
       CString str;
       m_str +="Line ==";
       m_nLineCount++;
       str.Format( "%4d", m_nLineCount );
       m_str += str + "==";
       m_str +="01234567890123456789012345678901234567890123456789\r\n";

       //获取刷新前,水平滚动条和垂直滚动条的位置
        m_position.x = m_edit1.GetScrollPos( SB_HORZ );
       m_position.y = m_edit1.GetScrollPos( SB_VERT );

       //获取水平滚动条的滚动范围
       m_edit.GetScrollRange( SB_HORZ, &m_nMinHScroll , &m_nMaxHScroll );
       m_flag++;
       if( m_flag == 1 )
       {
                //获取第一行字符个数
                maxLen = m_str.GetLength();
       }

        //刷新EditBox中的内容
       m_edit.SetWindowTextA( m_str );
      //设定水平和垂直滚动条的位置(刷新前的位置)
      if( m_nMaxHScroll != m_nMinHScroll )
     {
                //这步换算直接影响到是否能定位水平滚动条刷新前的位置
                int nChar = ( maxLen * m_position.x ) / (m_nMaxHScroll - m_nMinHScroll);
                m_edit1.LineScroll( m_position.y, nChar );
      }
      else
     {
                m_edit1.LineScroll( m_position.y );
     }
     CDialog::OnTimer(nIDEvent);
}

------------------------------------------------http://huagx770.spaces.live.com/blog/cns!C2B50FE280E36778!266.entry
    简单说明一下,由于CEditBox::LineScroll()函数是可以设置滚动内容的,但是由于其第2

个参数(一般情况下是缺省的)要求传入的是字符个数,即:将要水平滚动的字符个数,所以要
进行一下换算:
    nChar = ( maxLen * m_position.x ) / (m_nMaxHScroll - m_nMinHScroll);
即可。

-----------------------------------------------------

MFC制作双缓冲无闪烁的字幕滚动条

http://zjyzjy.blog.51cto.com/329429/67390
来自: http://hi.baidu.com/jam12315/blog/item/63f4fe0902fb438ad1581bbf.html
为了您的安全,请只打开来源可靠的网址

打开网站    取消

来自: http://hi.baidu.com/bjwyl66/blog/item/47719f3abcb196cfd4622534.html
 
 
  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: VC鼠标自动循环点击源代码是指使用VC(Visual C++)编程语言编写的程序,用于实现鼠标自动循环点击的功能。以下是一个简单的示例代码: ```c++ #include <Windows.h> // 引入Windows.h头文件 int main() { int count = 0; // 设置点击次数 int interval = 1000; // 设置点击间隔(单位:毫秒) while(count < 10) // 循环点击10次 { POINT p; // 定义一个点的结构体,用于保存当前鼠标坐标 GetCursorPos(&p); // 获取当前鼠标坐标 mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, p.x, p.y, 0, 0); // 模拟鼠标左键点击 Sleep(interval); // 休眠指定的时间间隔 count++; // 点击次数自增 } return 0; } ``` 以上代码通过循环控制鼠标的点击次数,通过`GetCursorPos`函数获取鼠标当前的坐标,并通过`mouse_event`函数模拟鼠标左键的点击操作。同时,通过`Sleep`函数实现点击间隔的控制。该代码简单实现了鼠标自动循环点击的功能。 ### 回答2: 要编写VC鼠标自动循环点击的源代码,可以使用以下步骤: 1. 引入相关库和头文件:在代码开头使用`#include`指令引入`Windows.h`头文件,以及一些其他可能需要的库和头文件。 2. 定义主函数:使用`int main()`定义主函数。 3. 获取屏幕尺寸:使用`GetSystemMetrics()`函数获取屏幕的宽度和高度。 4. 创建鼠标点击的循环:使用`for`循环,设置循环次数或使用`while`循环,并给一个终止循环的条件。 5. 声明鼠标点击位置:使用`MOUSE_EVENTF_LEFTDOWN`和`MOUSE_EVENTF_LEFTUP`来模拟鼠标左键的按下和抬起操作。 6. 鼠标点击位置:使用`SetCursorPos()`函数设定鼠标点击的位置,可以使用特定的坐标点,也可以使用屏幕尺寸进行随机点击。 7. 进行鼠标点击操作:使用`mouse_event()`函数来模拟鼠标点击。 8. 设置鼠标点击的延迟:使用`Sleep()`函数设置鼠标点击之间的延迟,以控制点击速度。 9. 释放资源:使用`ReleaseCapture()`函数来释放鼠标捕捉。 10. 返回值:使用`return`语句返回0。 总的来说,以上步骤描述了实现VC鼠标自动循环点击的基本流程和代码框架。具体的实现还需根据实际需求进一步完善和调整。希望能对你有所帮助。 ### 回答3: vc鼠标自动循环点击源代码可以使用C++编写,以下是一个简单的实现: ```c++ #include <windows.h> int main() { // 获取屏幕宽高 int screenWidth = GetSystemMetrics(SM_CXSCREEN); int screenHeight = GetSystemMetrics(SM_CYSCREEN); // 设置鼠标点击位置 int posX = screenWidth / 2; int posY = screenHeight / 2; // 设置点击次数和间隔时间 int clickCount = 10; int interval = 1000; // 循环模拟鼠标点击 for (int i = 0; i < clickCount; i++) { // 移动鼠标到指定位置 SetCursorPos(posX, posY); // 模拟鼠标左键按下和抬起 mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); // 间隔一定时间后继续下一次点击 Sleep(interval); } return 0; } ``` 以上代码使用了Windows API中的一些函数和结构体实现了鼠标自动循环点击的功能。具体步骤如下: 1. 获取屏幕的宽度和高度,用来确定鼠标点击位置。 2. 设置需要点击的次数和每次点击的间隔时间。 3. 使用一个循环来模拟鼠标点击操作。 4. 在每次循环中,先将鼠标移动到指定的位置,再模拟鼠标左键按下和抬起的操作。 5. 最后,在每次点击之间间隔指定的时间。 以上代码只是一个简单的示例,可以根据实际需求进行修改和扩展。注意,在编译和运行代码前,需要在项目属性中添加Windows SDK的库文件依赖。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值