各位老师c++中,以下源码如何修改?
本帖最后由 jtwc 于 2022-3-9 17:39 编辑各位老师c++中,要在以下源码中实现读取某个数组中的数据(例如读取Str中的数据)如何修改?
#include "stdafx.h"
#include <Windows.h>
#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <iomanip>
#include <fstream>
#include <sstream>
#include <stdio.h>
#include <tchar.h>
#include <string.h>
using namespace std;
int Pnum = 0, Cnum;
bool CALLBACK EnumChildWindowsProc(HWND HwndChild, LPARAM lparam)
{
char Str={0};
Cnum++;
GetWindowText(HwndChild, Str, 255);
printf("%d :%s\n", Cnum,Str);
return TRUE;
}
int main()
{
HWND H = FindWindow(NULL, "窗口");
EnumChildWindows(H, (WNDENUMPROC)EnumChildWindowsProc, NULL);
getchar();
return 0;
} C++的吧。C和C++是不同的语言。 一剑飘零 发表于 2022-3-9 17:02
C++的吧。C和C++是不同的语言。
老师对的 其实吗,没有看懂,大致说下吧。
从头文件看起来是在VC++里创建的代码,从main函数的形式可排除是MFC或者WinAPI编程。
留下的只能是控制台的C和C++编程了。
既然转到控制台编程了,用的是printf(),大概率是C代码。其实如果C++不用类的话也和C没有区别。
剩下的就是如何返回函数内的数组值了,因为你定义的数组是局部变量,当函数调用结束,值就会销毁,所以只能以返回值的方式传参出来。
这样就可以在主函数使用处理的函数结果了。如果你想返回字符数组,那个好像不行,函数是不能返回数组和函数的,只能以指针的形式返回。
这样的话,你的数组应该是动态申请的。创建在堆上的数组就好,后边返回数组指针。用完记得释放内存就好。 dbgcode 发表于 2022-3-9 18:20
其实吗,没有看懂,大致说下吧。
从头文件看起来是在VC++里创建的代码,从main函数的形式可排除是MFC或者W ...
老师刚学,不太明白,该如何写呢? char c = Str;
printf("25 is : %c",c);
或者c++的话直接上cout:
std::cout<< Str << std::endl;// #include <iostream>
类似这种, 你可以用for和数组的访问模式(arr)打印自己想要的内容 胡箫儿 发表于 2022-3-9 19:44
char c = Str;
printf("25 is : %c",c);
或者c++的话直接上cout:
老师,用char c = Str;
printf("25 is : %c",c);出乱码,
用std::cout<< Str << std::endl;// #include <iostream>
空白 你这不是枚举打印指定窗口下子窗口的标题吗?没成功?运行后是什么样?没图,另外确定编程环境是多字节还是宽字节,api考虑加全局作用域::或A/W…
无闻无问 发表于 2022-3-9 20:58
你这不是枚举打印指定窗口下子窗口的标题吗?没成功?运行后是什么样?没图,另外确定编程环境是多字节还是宽 ...
老师,谢谢了,多字节,图如下 你这个代码看得我头痛,说明你基础很薄弱,还是有时间多学学吧
指出你几个有问题的地方
1.Cnum 你没有初始化为0
2.CALLBACK前面应该是大写的BOOL 不是bool 这两者有区别
3.GetWindowText 在VS中默认是W,你如果要用cout或者printf应该加A,要么你用wcout或者wprintf
4.如果打印str,只会是一个字符,而不是字符串,乱码是很正常的事,详解可以看ascii码表,如果你要截取str到str这串字符串,那就另说
int Cnum, Pnum = 0;
BOOL CALLBACK EnumChildWindowsProc(HWND HwndChild, LPARAM lparam)
{
char Str = { 0 };
Cnum++;
GetWindowTextA(HwndChild, Str, 255);
printf("%d :%s\n", Cnum, Str);
return TRUE;
}
int main()
{
EnumChildWindows((HWND)197552, EnumChildWindowsProc, NULL);
std::cout << "Hello World!\n";
getchar();
}
页:
[1]
2