MFC 编辑框内容更新方法以及滚动条设置

  1. 内容更新,之前已经说过一种就是调用UpdateData(FALSE);来实现。但是这种方法是对整个编辑框进行更新。
  2. 通过单个编辑内容设置更新内容。这种是调用SetDlgItemText(IDC_EDIT,m_Edit1_Value);来实现。
  3. 滚动条的设置,首先是要先设置一下编辑框属性,使能多行滚动,以及其滚动方式。之后申请一个编辑框的控制变量类型。
    • 在事件处理时调用函数:m_Edit1_path_Ctl.LineScroll(m_Edit1_path_Ctl.GetLineCount());
    • 更新后代码如下:
    •   1 // FileCrcDlg.cpp : implementation file
        2 //
        3
        4 #include "stdafx.h"
        5 #include "FileCrc.h"
        6 #include "FileCrcDlg.h"
        7
        8 #ifdef _DEBUG
        9 #define new DEBUG_NEW
       10 #undef THIS_FILE
       11 static char THIS_FILE[] = __FILE__;
       12 #endif
       13
       14 /////////////////////////////////////////////////////////////////////////////
       15 // CAboutDlg dialog used for App About
       16
       17 class CAboutDlg : public CDialog
       18 {
       19 public:
       20     CAboutDlg();
       21
       22 // Dialog Data
       23     //{{AFX_DATA(CAboutDlg)
       24     enum { IDD = IDD_ABOUTBOX };
       25     //}}AFX_DATA
       26
       27     // ClassWizard generated virtual function overrides
       28     //{{AFX_VIRTUAL(CAboutDlg)
       29     protected:
       30     virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
       31     //}}AFX_VIRTUAL
       32
       33 // Implementation
       34 protected:
       35     //{{AFX_MSG(CAboutDlg)
       36     //}}AFX_MSG
       37     DECLARE_MESSAGE_MAP()
       38 };
       39
       40 CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
       41 {
       42     //{{AFX_DATA_INIT(CAboutDlg)
       43     //}}AFX_DATA_INIT
       44 }
       45
       46 void CAboutDlg::DoDataExchange(CDataExchange* pDX)
       47 {
       48     CDialog::DoDataExchange(pDX);
       49     //{{AFX_DATA_MAP(CAboutDlg)
       50     //}}AFX_DATA_MAP
       51 }
       52
       53 BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
       54     //{{AFX_MSG_MAP(CAboutDlg)
       55         // No message handlers
       56     //}}AFX_MSG_MAP
       57 END_MESSAGE_MAP()
       58
       59 /////////////////////////////////////////////////////////////////////////////
       60 // CFileCrcDlg dialog
       61
       62 CFileCrcDlg::CFileCrcDlg(CWnd* pParent /*=NULL*/)
       63     : CDialog(CFileCrcDlg::IDD, pParent)
       64 {
       65     //{{AFX_DATA_INIT(CFileCrcDlg)
       66     m_path = _T("");
       67     m_crc_hex = _T("");
       68     m_crc_dec = _T("");
       69     //}}AFX_DATA_INIT
       70     // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
       71     m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
       72 }
       73
       74 void CFileCrcDlg::DoDataExchange(CDataExchange* pDX)
       75 {
       76     CDialog::DoDataExchange(pDX);
       77     //{{AFX_DATA_MAP(CFileCrcDlg)
       78     DDX_Control(pDX, IDC_EDIT3_crc_dec, m_Edit3_dec_Ctl);
       79     DDX_Control(pDX, IDC_EDIT2_crc_hex, m_Edit2_hex_Ctl);
       80     DDX_Control(pDX, IDC_EDIT1_path, m_Edit1_path_Ctl);
       81     DDX_Text(pDX, IDC_EDIT1_path, m_path);
       82     DDX_Text(pDX, IDC_EDIT2_crc_hex, m_crc_hex);
       83     DDX_Text(pDX, IDC_EDIT3_crc_dec, m_crc_dec);
       84     //}}AFX_DATA_MAP
       85 }
       86
       87 BEGIN_MESSAGE_MAP(CFileCrcDlg, CDialog)
       88     //{{AFX_MSG_MAP(CFileCrcDlg)
       89     ON_WM_SYSCOMMAND()
       90     ON_WM_PAINT()
       91     ON_WM_QUERYDRAGICON()
       92     ON_BN_CLICKED(IDOK, OnOpen)
       93     ON_BN_CLICKED(IDC_BUTTON1, OnButton1_ClearAll)
       94     ON_WM_DROPFILES()
       95     //}}AFX_MSG_MAP
       96 END_MESSAGE_MAP()
       97
       98 /////////////////////////////////////////////////////////////////////////////
       99 // CFileCrcDlg message handlers
      100
      101 BOOL CFileCrcDlg::OnInitDialog()
      102 {
      103     CDialog::OnInitDialog();
      104
      105     // Add "About..." menu item to system menu.
      106
      107     // IDM_ABOUTBOX must be in the system command range.
      108     ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
      109     ASSERT(IDM_ABOUTBOX < 0xF000);
      110
      111     CMenu* pSysMenu = GetSystemMenu(FALSE);
      112     if (pSysMenu != NULL)
      113     {
      114         CString strAboutMenu;
      115         strAboutMenu.LoadString(IDS_ABOUTBOX);
      116         if (!strAboutMenu.IsEmpty())
      117         {
      118             pSysMenu->AppendMenu(MF_SEPARATOR);
      119             pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
      120         }
      121     }
      122
      123     // Set the icon for this dialog.  The framework does this automatically
      124     //  when the application‘s main window is not a dialog
      125     SetIcon(m_hIcon, TRUE);            // Set big icon
      126     SetIcon(m_hIcon, FALSE);        // Set small icon
      127
      128     // TODO: Add extra initialization here
      129
      130     return TRUE;  // return TRUE  unless you set the focus to a control
      131 }
      132
      133 void CFileCrcDlg::OnSysCommand(UINT nID, LPARAM lParam)
      134 {
      135     if ((nID & 0xFFF0) == IDM_ABOUTBOX)
      136     {
      137         CAboutDlg dlgAbout;
      138         dlgAbout.DoModal();
      139     }
      140     else
      141     {
      142         CDialog::OnSysCommand(nID, lParam);
      143     }
      144 }
      145
      146 // If you add a minimize button to your dialog, you will need the code below
      147 //  to draw the icon.  For MFC applications using the document/view model,
      148 //  this is automatically done for you by the framework.
      149
      150 void CFileCrcDlg::OnPaint()
      151 {
      152     if (IsIconic())
      153     {
      154         CPaintDC dc(this); // device context for painting
      155
      156         SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
      157
      158         // Center icon in client rectangle
      159         int cxIcon = GetSystemMetrics(SM_CXICON);
      160         int cyIcon = GetSystemMetrics(SM_CYICON);
      161         CRect rect;
      162         GetClientRect(&rect);
      163         int x = (rect.Width() - cxIcon + 1) / 2;
      164         int y = (rect.Height() - cyIcon + 1) / 2;
      165
      166         // Draw the icon
      167         dc.DrawIcon(x, y, m_hIcon);
      168     }
      169     else
      170     {
      171         CDialog::OnPaint();
      172     }
      173 }
      174
      175 // The system calls this to obtain the cursor to display while the user drags
      176 //  the minimized window.
      177 HCURSOR CFileCrcDlg::OnQueryDragIcon()
      178 {
      179     return (HCURSOR) m_hIcon;
      180 }
      181 /******************************************************************************
      182 Public external variables declaration
      183 ******************************************************************************/
      184 const unsigned short crc_table[256]={
      185         0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,
      186         0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,
      187         0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6,
      188         0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de,
      189         0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485,
      190         0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d,
      191         0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4,
      192         0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc,
      193         0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823,
      194         0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b,
      195         0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12,
      196         0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a,
      197         0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41,
      198         0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49,
      199         0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70,
      200         0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78,
      201         0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f,
      202         0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067,
      203         0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e,
      204         0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256,
      205         0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d,
      206         0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
      207         0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c,
      208         0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634,
      209         0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab,
      210         0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3,
      211         0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a,
      212         0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92,
      213         0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9,
      214         0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1,
      215         0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8,
      216         0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0
      217 };
      218
      219
      220 /************************************************
      221 function name: crc 16
      222 using e.g.
      223   crc = 0xffff;
      224   for(i=0;i<bytes_length;i++)
      225   {
      226     crc = crc_16(crc,data_bytes_buf[i]);
      227   }
      228   return crc;
      229 ***
      230 parameter: crc, data
      231 return: crc-16
      232 ************************************************/
      233 unsigned short crc_16(unsigned short crc,  BYTE data)
      234 {
      235   BYTE da;
      236
      237   da=(BYTE)(crc/256);
      238   crc<<=8;              //crc=crc*256
      239   crc ^= crc_table[da^data];
      240   return(crc);
      241 }
      242 //0x12a5 --> "12a5"
      243 void swap_word_byte(WORD wd,BYTE *by)
      244 {
      245     unsigned char i,k;
      246     for(i=0;i<4;i++)
      247     {
      248         k = (wd & 0xF000)>>12;
      249         if(9>=k)
      250         {
      251             *by++=k+‘0‘;
      252         }
      253         else if((k>=0x0a)&&(0x0f>=k))
      254         {
      255             *by++=k+0x37;
      256         }
      257         wd<<=4;
      258     }
      259 }
      260 void CFileCrcDlg::OnOpen()
      261 {
      262     // TODO: Add your control notification handler code here
      263     WORD n;
      264     WORD i;
      265     BYTE szchar[201];
      266     BYTE crc_hex[4],bt;
      267     CString strtemp="";
      268     CFileDialog fileDlg(TRUE);
      269     fileDlg.m_ofn.lpstrFilter="All files (*.*)";
      270     if(fileDlg.DoModal()==IDOK)
      271     {
      272         CFile file(fileDlg.m_ofn.lpstrFile,CFile::modeRead);
      273         UpdateData(TRUE);
      274         m_path += file.GetFilePath();
      275         m_path += "\r\n";
      276         //clear the Edit Dlg
      277         i=0xffff;
      278         memset(szchar,0,201);
      279         while(file.Read(szchar,200))
      280         {
      281             n=0;
      282             while(szchar[n])
      283             {
      284                 i=crc_16(i,szchar[n]);
      285                 n++;
      286             }
      287             memset(szchar,0,201);
      288         }
      289         strtemp.Format("%d",i);
      290         m_crc_dec+=strtemp;
      291         m_crc_dec+="\r\n";
      292
      293         swap_word_byte(i,crc_hex);
      294         for(i=0;i<4;i++)
      295         {
      296             bt =*(char*)(crc_hex+i);
      297             strtemp.Format("%c",bt);
      298             m_crc_hex+=strtemp;
      299         }
      300         m_crc_hex += "\r\n";
      301         // write value to edit
      302         SetDlgItemText(IDC_EDIT1_path,m_path);
      303         SetDlgItemText(IDC_EDIT2_crc_hex,m_crc_hex);
      304         SetDlgItemText(IDC_EDIT3_crc_dec,m_crc_dec);
      305         //set the line scroll to the bottom
      306         m_Edit1_path_Ctl.LineScroll(m_Edit1_path_Ctl.GetLineCount());
      307         m_Edit2_hex_Ctl.LineScroll(m_Edit2_hex_Ctl.GetLineCount());
      308         m_Edit3_dec_Ctl.LineScroll(m_Edit3_dec_Ctl.GetLineCount());
      309         file.Close();
      310     }
      311 }
      312
      313 void CFileCrcDlg::OnButton1_ClearAll()
      314 {
      315     // TODO: Add your control notification handler code here
      316     UpdateData(TRUE);
      317     m_crc_dec = "";
      318     m_crc_hex = "";
      319     m_path = "";
      320     UpdateData(FALSE);
      321 }
      322
      323 void CFileCrcDlg::OnDropFiles(HDROP hDropInfo)
      324 {
      325     // TODO: Add your message handler code here and/or call default
      326     UINT j,iFileCount;
      327     char file_name[MAX_PATH];
      328     //variable for crc
      329     WORD n;
      330     WORD i;
      331     BYTE szchar[201];
      332     BYTE crc_hex[4],bt;
      333     CString strtemp="";
      334
      335     iFileCount=::DragQueryFile(hDropInfo,0xffffffff,NULL,0);
      336
      337     for(j=0;j<iFileCount;j++)
      338     {
      339         ::DragQueryFile(hDropInfo,j,file_name,MAX_PATH);
      340         CFile file(file_name,CFile::modeRead);
      341         UpdateData(TRUE);
      342         //clear the Edit Dlg
      343         i=0xffff;
      344         memset(szchar,0,201);
      345         while(file.Read(szchar,200))
      346         {
      347             n=0;
      348             while(szchar[n])
      349             {
      350                 i=crc_16(i,szchar[n]);
      351                 n++;
      352             }
      353             memset(szchar,0,201);
      354         }
      355         strtemp.Format("%d",i);
      356         m_crc_dec+=strtemp;
      357         m_crc_dec+="\r\n";
      358
      359         swap_word_byte(i,crc_hex);
      360         for(i=0;i<4;i++)
      361         {
      362             bt =*(char*)(crc_hex+i);
      363             strtemp.Format("%c",bt);
      364             m_crc_hex+=strtemp;
      365         }
      366         m_crc_hex += "\r\n";
      367
      368         m_path += file.GetFilePath();
      369         m_path += "\r\n";
      370         // write value to edit
      371         SetDlgItemText(IDC_EDIT1_path,m_path);
      372         SetDlgItemText(IDC_EDIT2_crc_hex,m_crc_hex);
      373         SetDlgItemText(IDC_EDIT3_crc_dec,m_crc_dec);
      374         //set the line scroll to the bottom
      375         m_Edit1_path_Ctl.LineScroll(m_Edit1_path_Ctl.GetLineCount());
      376         m_Edit2_hex_Ctl.LineScroll(m_Edit2_hex_Ctl.GetLineCount());
      377         m_Edit3_dec_Ctl.LineScroll(m_Edit3_dec_Ctl.GetLineCount());
      378         file.Close();
      379     }
      380     ::DragFinish(hDropInfo);
      381     CDialog::OnDropFiles(hDropInfo);
      382 }

OK, That is all. Thank you!

时间: 2024-10-09 13:03:04

MFC 编辑框内容更新方法以及滚动条设置的相关文章

MFC编辑框换行实现

MFC中换行实现 在mfc中编辑框允许输入多行时,换行符被表示为<归位><换行>即“\r\n”,用ascii码表示为13 10 如果为编辑框中想要输入换行,就请将编辑框的属性: Auto HScroll 设置为 False MultiLine  设置为 True Want Return 设置为 True txt文本框中的换行实现 换行符被表示为<换行>即“\n”,用ascii码表示为10 MFC编辑框换行实现,布布扣,bubuko.com

【转】MFC编辑框自动换行,垂直滚动条自动下移

1.新建一个编辑框控件(Edit Control),将其多行(Multiline)前面打勾(属性设置为True),Auto HScroll前面的勾去掉(属性设置False),这样就可以实现每一行填满后自动换行了. 2.再将垂直滚动条(Vetrical Scroll)前面打勾(属性设置为True),当输入或显示超过编辑框的大小后就会出现垂直滚动条. 3.如果是输入,滚动条会自动移动跟随到当前输入行,但是如果是设置将很多内容一次性让编辑框显示,滚动条就会一直处于最上方,需要手动拉到最下面才能看见最后

MFC 编辑框专辑

在自动换行设置的时候,要在EDIT控件的属性中选中"multiline"的属性和Auto_HScroll.Vertical scroll. 经过多次测试,总结出VC编辑框(EDIT)的自动换行与自动滚屏的方法. 方法一: (当EDIT映射到一CString时)m_String = m_String + sNewString + "\r\n" //自动换行(其中m_String是EDIT筐所关联的CString对象)UpdateData(false); 此法只能做到自动换行,不

MFC编辑框Edit

1.简介 输入并编辑文本. 2.常用属性 属性 含义 Number True只能输入数字 Password True密码模式 Want return True接收回车键,自动换行,只有在多行模式下,才能换行 Multiline True多行模式 Auto VScroll True 当垂直方向字符太多,自动出现滚动条,同时设置Vertical Scroll才有效 Vertical Scroll True当垂直方向字符太多,自动出现滚动条,和Auto VScroll配合使用 Horizontal S

读取UEditor编辑框内容到数据库和上传图片的配置

主要内容: 如何从数据库读取之前编辑器文本框内容为纯文本 Ueditor上传图片的配置 1. 如何从数据库读取之前编辑器文本框内容为纯文本. 在写下标题问题解决方案之前,我先阐述一个前台显示中遇到的一个问题: 当显示视频时,从数据库读取出来的是html代码,经过razor解析返回到前台页面就是成这样了: <p><span style="font-family: 隶书, SimLi; font-size: 24px; color: rgb(255, 0, 0);">

MFC编辑框字体大小调节(转)

在学习MFC中需要调整编辑框中的字体大小,以下是我结合网上与自己实际操作总结的,希望对其它同学有所帮助.       首先,了解以下函数原型:BOOL CreateFont( int nHeight, // 字体高度:0为默认高度,非0绝对值为字体高度int nWidth, // 字体宽度int nEscapement, // 文本行的倾斜度nt nOrientation, // 字符基线的倾斜度int nWeight, // 字体的粗细                             

MFC 编辑框中字体大小改变,行高不能改变,只能显示一半的问题,已解决。

CKagulaCEdit是CEdit的一个继承类,m_edit的CKagulaCEdit类型的一个变量 调用的时候,是这样的: 编辑框中字体大小改变,行高不能改变,只能显示一半的问题,问题如下: 这时的显示是这样的: 添加 CEdit::SetFont(m_pfont);这行后, 显示正常:

MFC 编辑框输入16进制字符串转换为16进制数或者10进制数据计算

1.编辑框添加变量,并选择变量类型为CString. 2.  使用"_tcstoul"函数将Cstring 类型转换为16进制/10进制数进行计算. 原文地址:https://www.cnblogs.com/lize19940412/p/10068273.html

c#仿照qq登录界面编辑框内容操作

using System;using System.Drawing;using System.Windows.Forms; namespace 案例演示{ public partial class frmlogo : Form { public frmlogo() { InitializeComponent(); } int usi,pwi; private void frmlogo_Load(object sender, EventArgs e) { } private void textBo