vs2017编程技巧

优化输出

很久没使用vs2017了,说我过期了,我不得已在微软上面注册一个账户。

开始编程,发现没法输入我的一些调试信息。我记得使用windbg可以的,但是又要我注册,我就放弃了,使用另外的办法

在做DLL库的时候经常会通过printf打印一些调试信息,但是MFC项目引用后printf信息是无法输出到调试窗口的,网上一些说通过AllocConsole();打开命令窗口在VS2017中竟然不好用,最终经过网络寻找到可用方法:

1、在vs中打开你的解决方案。

2、鼠标移动到你的项目名称上,点击鼠标右键,再点击属性,此刻会此项目的属性页。

3、在配置属性中,找到生成事件,在找到后期生成事件。

4、在命令行的右边空白处添加“editbin /SUBSYSTEM:CONSOLE $(OUTDIR)$(ProjectName).exe”,点击确定。
5、以上4步就已经ok了,此时运行你的程序,会多弹出一个黑色命令行的提示框,用来输出你的打印信息。
作者:路过之君
来源:优快云
(https://blog.youkuaiyun.com/xinxinsky/article/details/80733400)
版权声明:本文为博主原创文章,转载请附上博文链接!

搞窗口遍历

我想遍历桌面下的子窗口,发现使用findwindow,不好用。还是使用遍历函数好用
Ø EnumChildWindows
使用这个函数得到一个窗口的所有子窗口,包括子窗口的子窗口。不过在列举的过程中这个函数不能够列出正在创建的或者销毁的窗口。
通俗说,这个函数就是全部子窗口都找到了。所以我们只需要编写处理函数就可以了。
这个EnumWindowProc是回调函数,所以是系统调用的,当然可能是多线程调用,我认为他的参数hWnd是0000000累加1上去的,所以达到遍历所有子窗口的功能。但是是多线程,所以是没一定顺序的。

HWND h_temp=NULL;
BOOL CALLBACK EnumWindowProc(HWND hWnd, LPARAM lParam)
{
	char szCapture[1024]; CString str;
	int nLen = GetWindowTextA(hWnd, szCapture, 1024);
	//遍历所有子窗口
	if (nLen)
	{
		if (strcmp(szCapture, (char*)lParam) == 0)
		{
			h_temp = hWnd;
			//输出到调试窗口的。
			//printf("%x已经找到 %s", h_temp,szCapture); 
		}
		printf("%x %s\n", hWnd, szCapture);
	}
	return TRUE;
}
	HWND h = GetDesktopWindow();
	//获取了桌面句柄h 后,遍历全部子窗口,找一个窗口标题是 用户登录的窗口,然后用h_temp保存起来,等待利用。
	EnumChildWindows(h,EnumWindowProc, (LPARAM)"用户登录");
	main_hwnd = h_temp;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值