如何获取文本框内容

如何获取文本框内容,第1张

1GetDlgItem获取文本编辑框的指针来获取内容

2使用 GetDlgItemText 函数获取文本框的内容。

3使用 GetDlgItemInt来直接获取数值内容。

4第四种方法在类的定义 变量 来关联 控件

5第五种使用SendMessage获取编辑框内容。

1GetDlgItem获取文本编辑框的指针来获取内容

先使用 GetDlgItem(编辑框的ID)获取编辑框的指针。再指向编辑框的GetWindowText函数将获取内容保存至指定的字符数组里。

下面是代码。

int num1,num2,num3;

char char1[10],char2[10],char3[10];

GetDlgItem(IDC_EDIT1)->GetWindowText(char1,10);

GetDlgItem(IDC_EDIT2)->GetWindowText(char2,10);

num1=atoi(char1);

num2=atoi(char2);

num3=num2+num1;

itoa(num3,char3,10);

GetDlgItem(IDC_EDIT3)->SetWindowText(char3);

2使用 GetDlgItemText 函数获取文本框的内容。

GetDlgItemText 函数 从代码分析上来看,GetDlgItemText 函数是第一种方法的简写版。

int num1,num2,num3;

char char1[10],char2[10],char3[10];

GetDlgItemText(IDC_EDIT1,char1,10);

GetDlgItemText(IDC_EDIT2,char2,10);

num1=atoi(char1);

num2=atoi(char2);

num3=num2+num1;

itoa(num3,char3,10);

SetDlgItemText(IDC_EDIT3,char3);

3,使用 GetDlgItemInt来直接获取数值内容。

第二个例子是获取的文本内容,转成数值内容的话,就得使用atoi函数比较麻烦 就可以使用GetDlgItemInt来直接获取数值内容。

代码如下

int num1,num2,num3;

char char1[10],char2[10],char3[10];

num1=GetDlgItemInt(IDC_EDIT1);

num2=GetDlgItemInt(IDC_EDIT2);

num3=num1+num2;

SetDlgItemInt(IDC_EDIT3,num3);

4第四种方法在类的定义 变量 来关联 控件

单击 查看—建立类向导—Member Variables选项卡 单击对应的Control Ids的名称

在Member variable name填入 一个变量名即可。

如果想直接取值的话 ,在category中选择Value,那么这个变量名就是对应的值

UpdateData();

m_edit3=m_edit1+m_edit2;

UpdateData(false);

可以选择数据类型,来定义变量的数据类型。

如果是文本型的。

就在Category中选择 control,那么,这个变量名,就对应这个控件。就利用这个变量名进行 *** 作。

int num1,num2,num3;

char char1[10],char2[10],char3[10];

m_the_edit1GetWindowText(char1,10);

m_the_edit2GetWindowText(char2,10);

num1=atoi(char1);

num2=atoi(char2);

num3=num1+num2;

itoa(num3,char3,10);

m_the_edit3SetWindowText(char3);

5第五种使用SendMessage获取编辑框内容。

使用发送消息的方式。

(1)。采用全局类的SendMessage来发送获取消息内容的。

注意 第一个参数是目标窗口控件的句柄,第二个参数是固定的表示符,第三个是第四个字符变量的大小,第四个是字符变量数组的指针。

::SendMessage(GetDlgItem(IDC_EDIT1)->m_hWnd,WM_GETTEXT,10,(LPARAM)char1);

也可以这要获取句柄。

::SendMessage(m_the_edit1m_hWnd,WM_GETTEXT,10,(LPARAM)char1);

(2)。在窗口类中也有SendMessage函数。

GetDlgItem(IDC_EDIT1)->SendMessage(WM_GETTEXT,10,(LPARAM)char1);

或者这样

m_the_edit1SendMessage(WM_GETTEXT,10,(LPARAM)char1);

也有省事的SendDlgItemMessage 函数,可以直接发送获取文本的消息指指定控件的ID。

SendDlgItemMessage(IDC_EDIT2,WM_GETTEXT,(LPARAM)char2);

1:读入txt文本的内容

2:分割文本 分割参数为换行符(也可以用其他,这个主要看txt文本里面怎么写 一行一个账号信息就用换行符 用其他字符也可以)

3:计次循环 循环里面 用----分割 然后分别加入列表框!

祝你愉快,哦

一、建立一个模块,复制下面代码

Option Explicit

Private PlatformKnown As Boolean

Private NTflag As Boolean

Private fpHandle As Long

Private Type OSVERSIONINFO

dwOSVersionInfoSize As Long

dwMajorVersion As Long

dwMinorVersion As Long

dwBuildNumber As Long

dwPlatformId As Long

szCSDVersion As String 128

End Type

Private WIN As OSVERSIONINFO

Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (LpVersionInformation As OSVERSIONINFO) As Long

'

'================== Win95/98 Process Memory functions

Private Declare Function CreateFileMapping Lib "kernel32" Alias "CreateFileMappingA" (ByVal hFile As Long, ByVal lpFileMappigAttributes As Long, ByVal flProtect As Long, ByVal dwMaximumSizeHigh As Long, ByVal dwMaximumSizeLow As Long, ByVal lpName As String) As Long

Private Declare Function MapViewOfFile Lib "kernel32" (ByVal hFileMappingObject As Long, ByVal dwDesiredAccess As Long, ByVal dwFileOffsetHigh As Long, ByVal dwFileOffsetLow As Long, ByVal dwNumberOfBytesToMap As Long) As Long

Private Declare Function UnmapViewOfFile Lib "kernel32" (lpBaseAddress As Any) As Long

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

'

'================== WinNT/2000 Process Memory functions

Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long

Private Declare Function VirtualAllocEx Lib "kernel32" (ByVal hProcess As Long, ByVal lpAddress As Long, ByVal dwSize As Long, ByVal flAllocationType As Long, ByVal flProtect As Long) As Long

Private Declare Function VirtualFreeEx Lib "kernel32" (ByVal hProcess As Long, ByVal lpAddress As Long, ByVal dwSize As Long, ByVal dwFreeType As Long) As Long

Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Long, ByVal lpBuffer As Long, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long

Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Long, ByVal lpBuffer As Long, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long

'

'

'================== Common Platform

'

Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal lpDest As Long, ByVal lpSource As Long, ByVal cBytes As Long)

Private Declare Function lstrlenA Lib "kernel32" (ByVal lpsz As Long) As Long

Private Declare Function lstrlenW Lib "kernel32" (ByVal lpString As Long) As Long

Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long

Private Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long

' ----------

Private Const PAGE_READWRITE = &H4

Private Const MEM_RESERVE = &H2000&

Private Const MEM_RELEASE = &H8000&

Private Const MEM_COMMIT = &H1000&

Private Const PROCESS_VM_OPERATION = &H8

Private Const PROCESS_VM_READ = &H10

Private Const PROCESS_VM_WRITE = &H20

Private Const STANDARD_RIGHTS_REQUIRED = &HF0000

Private Const SECTION_QUERY = &H1

Private Const SECTION_MAP_WRITE = &H2

Private Const SECTION_MAP_READ = &H4

Private Const SECTION_MAP_EXECUTE = &H8

Private Const SECTION_EXTEND_SIZE = &H10

Private Const SECTION_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED Or SECTION_QUERY Or SECTION_MAP_WRITE Or SECTION_MAP_READ Or SECTION_MAP_EXECUTE Or SECTION_EXTEND_SIZE

Private Const FILE_MAP_ALL_ACCESS = SECTION_ALL_ACCESS

'==================Findwindow

Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _

(ByVal hwnd As Long, ByVal wMsg As Long, _

ByVal wParam As Long, ByVal lParam As Long) As Long

Private Const WM_USER = &H400&

Private Const SB_GETTEXTLENGTH = (WM_USER + 3)

Private Const SB_GETPARTS = (WM_USER + 6)

Private Const SB_GETTEXT = (WM_USER + 2)

Private Const SB_ISSIMPLE = (WM_USER + 14)

Function GetStatusBarText(ByVal hStatusbar As Long, ByVal panel_Number As Long) As String

Dim xpBuffer As Long ' address of cross-process buffer

Dim myBuffer(255) As Byte

Dim xpWindow As Long, lRet As Long, bText As String

xpWindow = GetParent(hStatusbar)

If xpWindow = 0 Then Exit Function

xpBuffer = drMemoryAlloc(xpWindow, 255)

lRet = SendMessage(hStatusbar, SB_GETTEXT, panel_Number - 1, xpBuffer)

drMemoryRead xpBuffer, VarPtr(myBuffer(0)), 255

drMemoryFree xpBuffer

If lRet > 0 Then

bText = StrConv(myBuffer, vbUnicode)

bText = Left(bText, lRet)

GetStatusBarText = bText

End If

End Function

Private Function drMemoryAlloc(ByVal xpWindow As Long, ByVal nBytes As Long) As Long

Dim xpThread As Long

Dim xpID As Long

If WindowsNT Then

xpThread = GetWindowThreadProcessId(xpWindow, xpID)

drMemoryAlloc = VirtualAllocNT(xpID, nBytes)

Else

drMemoryAlloc = VirtualAlloc9X(nBytes)

End If

End Function

Private Sub drMemoryFree(ByVal mPointer As Long)

If WindowsNT Then

VirtualFreeNT mPointer

Else

VirtualFree9X mPointer

End If

End Sub

Private Sub drMemoryRead(ByVal xpBuffer As Long, ByVal myBuffer As Long, ByVal nBytes As Long)

If WindowsNT Then

ReadProcessMemory fpHandle, xpBuffer, myBuffer, nBytes, 0

Else

CopyMemory myBuffer, xpBuffer, nBytes

End If

End Sub

Private Sub drMemoryWrite(ByVal xpBuffer As Long, ByVal myBuffer As Long, ByVal nBytes As Long)

If WindowsNT Then

WriteProcessMemory fpHandle, xpBuffer, myBuffer, nBytes, 0

Else

CopyMemory xpBuffer, myBuffer, nBytes

End If

End Sub

Private Function WindowsNT() As Boolean

If Not PlatformKnown Then GetWindowsVersion

WindowsNT = NTflag

End Function

Private Function WindowsXP() As Boolean

If Not PlatformKnown Then GetWindowsVersion

WindowsXP = NTflag And (WINdwMinorVersion <> 0)

End Function

Private Sub GetWindowsVersion()

WINdwOSVersionInfoSize = Len(WIN)

If (GetVersionEx(WIN)) = 0 Then Exit Sub ' in deep doo if this fails

NTflag = (WINdwPlatformId = 2)

PlatformKnown = True

End Sub

Private Function VirtualAllocNT(ByVal fpID As Long, ByVal memSize As Long) As Long

fpHandle = OpenProcess(PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE, False, fpID)

VirtualAllocNT = VirtualAllocEx(fpHandle, ByVal 0&, ByVal memSize, MEM_RESERVE Or MEM_COMMIT, PAGE_READWRITE)

End Function

Private Sub VirtualFreeNT(ByVal MemAddress As Long)

Call VirtualFreeEx(fpHandle, ByVal MemAddress, 0&, MEM_RELEASE)

CloseHandle fpHandle

End Sub

Private Function VirtualAlloc9X(ByVal memSize As Long) As Long

fpHandle = CreateFileMapping(&HFFFFFFFF, 0, PAGE_READWRITE, 0, memSize, vbNullString)

VirtualAlloc9X = MapViewOfFile(fpHandle, FILE_MAP_ALL_ACCESS, 0, 0, 0)

End Function

Private Sub VirtualFree9X(ByVal lpMem As Long)

UnmapViewOfFile lpMem

CloseHandle fpHandle

End Sub

Private Function dmWindowClass(ByVal hWindow As Long) As String

Dim className As String, cLen As Long

className = String(64, 0)

cLen = GetClassName(hWindow, className, 63)

If cLen > 0 Then className = Left(className, cLen)

dmWindowClass = className

End Function

二、程序调用举例:

msgbox "状态栏文本是:" & GetStatusBarText(12356,1)

表示获取句柄为12356的状态栏的第1项内的文本。

三、类似于lable的文本由于没有句柄,所以无法获取

可用函数有RIGHT() LEFT() MID()

1993/3/3是日期型先用YEAR()提出年份,再RIGHT()取后两位

设1993/3/3在B2格

函数:

=RIGHT(YEAR(B2),2)

RIGHT()和YEAR()函数的用法如下

RIGHT

也应用于:

RIGHTB

RIGHT 根据所指定的字符数返回文本字符串中最后一个或多个字符。

RIGHTB 根据所指定的字符数返回文本字符串中最后一个或多个字符。此函数用于双字节字符。

语法

RIGHT(text,num_chars)

RIGHTB(text,num_bytes)

Text 是包含要提取字符的文本字符串。

Num_chars 指定希望 RIGHT 提取的字符数。

Num_bytes 指定希望 RIGHTB 根据字节所提取的字符数。

说明

Num_chars 必须大于或等于 0。

如果 num_chars 大于文本长度,则 RIGHT 返回所有文本。

如果忽略 num_chars,则假定其为 1。

YEAR

返回某日期对应的年份。返回值为 1900 到 9999 之间的整数。

语法

YEAR(serial_number)

Serial_number 为一个日期值,其中包含要查找年份的日期。应使用 DATE

函数来输入日期,或者将日期作为其他公式或函数的结果输入。例如,使用 DATE(2008,5,23) 输入 2008 年 5 月 23 日。如果日期以文本的形式输入,则会出现问题。

说明

Microsoft Excel 可将日期存储为可用于计算的序列号。默认情况下,1900 年 1 月 1 日的序列号是 1 而 2008 年 1 月 1

日的序列号是 39448,这是因为它距 1900 年 1 月 1 日有 39448 天。Microsoft Excel for the Macintosh

使用另外一个默认日期系统。

由 YEAR、MONTH 和 DAY 函数返回的值是 Gregorian 值,不管所提供的日期值是怎样的显示格式。例如,如果所提供的日期值显示格式是 Hijri,YEAR、MONTH 和 DAY

函数返回的值将是对应 Gregorian 日期的值。

首先,定义全局变量 CDatabase db;然后在WM_CREATE中或其他合适地方,打开数据库dbOpen(数据库名,false,false,ODBC;UID=Admin);在你需要的地方,读取字段内容CRecordset rs(&db);CString strNum;int num;rsOpen(CRecordset::forwardOnly,select NUMBER1 from NUM where );if(!rsIsEOF()){rsGetFieldValue(REMARK,strNum);rsClose();num=atoi(strNum);//即将数据库中的数据NUMBER1读取并放到num中了}最后,你用读取出的这个数据和输入的数进行运算就可以了多注意下数据库中的字段类型,要正确读取。程序读取的数据库字段的数据类型是文本的。

如果直接使用file_get_contents来读取文件,那么在文件很大的时候会很占内容,比如这个文件有1GB的时候。

这个时候使用传统的文件 *** 作方式就好的多,因为是查找嘛,逐行读取匹配应该也是可以的,下面是我的一个建议,不知道是否满足你的要求,可以看下:

//

需要查找的内容

$search

=

'bcd';

//

打开文件

$res

=

fopen('atxt',

'r');

while

($line

=

fgets($res,

1024))

{

//

根据规则查找

if

(strpos($line,

$search)

===

0)

{

//

根据既定规则取得需要的数据

echo

substr($line,

4,

-1);

//

这里就是你想得到的

break;

}

}

//

关闭文件

fclose($res);

1、新建一个标准的VB EXE工程,只有一个Form,Form上有两个按钮:Command1和Command2。

2、双击Command1添加如下代码

Private Sub Command1_Click()

  Dim strFile     As String

  Dim intFile     As Integer

  Dim strData     As String

   strFile = "c:\学生成绩txt"

  intFile = FreeFile

  Open strFile For Input As intFile

  strData = StrConv(InputB(FileLen(strFile), intFile), vbUnicode)

  DebugPrint strData

  Close intFile

End Sub

3、按F8开始单步调试代码,点击Command1,进入单步调试功能,

4、多次按下F8或直接按下F5运行完成,就完成了读取文本文件内容并输出到立即窗口。

以上就是关于如何获取文本框内容全部的内容,包括:如何获取文本框内容、如何让超级列表框 获取TXT文本的数据、如何获取状态栏里的文本数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9635748.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存