Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Win32应用程序的WriteFile()函数_C++_Winapi - Fatal编程技术网

C++ Win32应用程序的WriteFile()函数

C++ Win32应用程序的WriteFile()函数,c++,winapi,C++,Winapi,我在WriteFile()上遇到了一个问题;使用Win32 C++应用程序的功能。第二个参数要求提供一个指向存储信息的缓冲区的指针。我使用什么语法来指向框中的输入文本?我的信息是来自文本框输入的文本。我使用什么语法来创建指向它的指针 以下是我正在使用的代码片段: case IDC_BUTTON_ONE: { HANDLE hFile = CreateFile("C:\\test.txt", GENERIC_READ

我在WriteFile()上遇到了一个问题;使用Win32 C++应用程序的功能。第二个参数要求提供一个指向存储信息的缓冲区的指针。我使用什么语法来指向框中的输入文本?我的信息是来自文本框输入的文本。我使用什么语法来创建指向它的指针

以下是我正在使用的代码片段:

case IDC_BUTTON_ONE:
                   {
                      HANDLE hFile = CreateFile("C:\\test.txt", GENERIC_READ,
                      0, NULL, CREATE_NEW, FILE_FLAG_OVERLAPPED, NULL);
                   }

要将控件的文本写入文件,还需要以下行:

char TextBuffer[256]; // Ascii
GetDlgItemTextA(hDlg, IDC_YOUR_CONTROL_ID, TextBuffer, ARRAY_SIZE(TextBuffer));
WriteFile(hFile, TextBuffer, strlen(TextBuffer), &SizeOut, lpOverlapped);

这将只写普通的旧ASCII。如果要使用
unicode
TCHAR
s(而不是chars),则需要选择编码,并从文本缓冲区中写入“仅字节”以外的内容。

文本是字符串-字符数组。假设您使用的是一个实际的char数组或一个将充当简单数组的类,则将该数组作为缓冲区传递。包含指向的链接,该链接显示了如何分配、填充和传递缓冲区。我一直在使用MSDN来帮助编程,而不是使用buffer选项,而是使用WriteFile()的第二个参数;只是一个段落,说明如何使用其中包含的信息创建指向缓冲区的指针。这就是我在这里问的原因。你不能只指向文本框缓冲区的原因是因为无法保证文本框如何准确地存储文本。特别是,您似乎使用了非Unicode函数,而文本框内部可能是Unicode。
GetDlgItemText()
返回实际写入数组的字符数。使用该值而不是
strlen()