吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1007|回复: 14
收起左侧

[求助] 各位老师c++中,以下源码如何修改?

[复制链接]
jtwc 发表于 2022-3-9 16:23
本帖最后由 jtwc 于 2022-3-9 17:39 编辑

各位老师c++中,要在以下源码中实现读取某个数组中的数据(例如读取Str[20]中的数据)如何修改?
#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[255]={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;
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

一剑飘零 发表于 2022-3-9 17:02
C++的吧。C和C++是不同的语言。
 楼主| jtwc 发表于 2022-3-9 17:29
dbgcode 发表于 2022-3-9 18:20
其实吗,没有看懂,大致说下吧。
从头文件看起来是在VC++里创建的代码,从main函数的形式可排除是MFC或者WinAPI编程。
留下的只能是控制台的C和C++编程了。
既然转到控制台编程了,用的是printf(),大概率是C代码。其实如果C++不用类的话也和C没有区别。
剩下的就是如何返回函数内的数组值了,因为你定义的数组是局部变量,当函数调用结束,值就会销毁,所以只能以返回值的方式传参出来。
这样就可以在主函数使用处理的函数结果了。如果你想返回字符数组,那个好像不行,函数是不能返回数组和函数的,只能以指针的形式返回。
这样的话,你的数组应该是动态申请的。创建在堆上的数组就好,后边返回数组指针。用完记得释放内存就好。
 楼主| jtwc 发表于 2022-3-9 18:59
dbgcode 发表于 2022-3-9 18:20
其实吗,没有看懂,大致说下吧。
从头文件看起来是在VC++里创建的代码,从main函数的形式可排除是MFC或者W ...

老师刚学,不太明白,该如何写呢?
胡箫儿 发表于 2022-3-9 19:44
char c = Str[25];
printf("25 is : %c",c);
或者c++的话直接上cout:
std::cout<< Str[25] << std::endl;  // #include <iostream>
类似这种, 你可以用for和数组的访问模式(arr[n])打印自己想要的内容
 楼主| jtwc 发表于 2022-3-9 20:10
胡箫儿 发表于 2022-3-9 19:44
char c = Str[25];
printf("25 is : %c",c);
或者c++的话直接上cout:

老师,用char c = Str[25];
printf("25 is : %c",c);出乱码,
用std::cout<< Str[25] << std::endl;  // #include <iostream>
空白
1.png
无闻无问 发表于 2022-3-9 20:58
你这不是枚举打印指定窗口下子窗口的标题吗?没成功?运行后是什么样?没图,另外确定编程环境是多字节还是宽字节,api考虑加全局作用域::或A/W…
 楼主| jtwc 发表于 2022-3-9 21:06
无闻无问 发表于 2022-3-9 20:58
你这不是枚举打印指定窗口下子窗口的标题吗?没成功?运行后是什么样?没图,另外确定编程环境是多字节还是宽 ...

老师,谢谢了,多字节,图如下
1.png
bester 发表于 2022-3-9 21:16
你这个代码看得我头痛,说明你基础很薄弱,还是有时间多学学吧

指出你几个有问题的地方

1.Cnum 你没有初始化为0
2.CALLBACK前面应该是大写的BOOL 不是bool 这两者有区别
3.GetWindowText 在VS中默认是W,你如果要用cout或者printf应该加A,要么你用wcout或者wprintf
4.如果打印str[25],只会是一个字符,而不是字符串,乱码是很正常的事,详解可以看ascii码表,如果你要截取str[25]到str[255]这串字符串,那就另说
[C++] 纯文本查看 复制代码
int Cnum, Pnum = 0;

 BOOL CALLBACK EnumChildWindowsProc(HWND HwndChild, LPARAM lparam)
{

	char Str[255] = { 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();
}

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 15:52

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表