C++Windows 程序开发该从哪里开始

355 天前
 seedhk
小弟原本是做 java 的,最近换了个闲一点的工作。很想学学 C++,再试试开发 Windows 应用程序。
算是 0 基础入门吧,刚开始学 C++的基础语法,想请教一下:
1.Windows 应用程序开发 0 基础的话,看什么书/视频比较适合入门,请帮忙推荐几本/几个视频;

2.需要学哪几块内容;

3.学到什么样子可以开发一个应用程序(非商用的那种工具之类的,纯兴趣);

4.如果后面学习逆向的话,需要接触 C++么,要学到什么程度。

谢谢~
3185 次点击
所在节点    C++
34 条回复
Nosub
355 天前
看出来,楼主的目的是 4 ,逆向,你这初心有点不太对。
seedhk
355 天前
@Nosub 我不是我没有别瞎说啊.jpg
ariasigh
355 天前
直接上 Qt 吧
dearmymy
355 天前
假设你目标是 4 的话
1 ,b 站随便找个 c11 以上的教程就行
2 ,window 核心编程,看雪的 加密与解密
3 ,如果 c++话,qt 是最好的。
4 ,学逆向特别是 win 平台,学会 c++继承 多态理论就够了。去看看 window pe 权威指南,了解下内存布局,不过能把 window 核心编程,跟加密与解密 搞懂基本算入门了。不过也没什么意义。win 下早就成熟了。这点技术什么都搞不了。真想学逆向,还是直接移动端把。
jones2000
355 天前
一般看 win32.
逆向 c++就算了,有些全程都是指针,各类类型的强制转换, 就算给你源码, 估计也头大的。
chesha1
355 天前
从找工作考虑,你可以试试学 js ,然后用 electron 开发应用程序的路,毕竟感觉 c++岗位少,开发效率低,除了 qt 的软件性能确实强于 electron ,没啥突出优点了。你学完 js/node.js ,还可以用于前端或者全栈
henix
355 天前
先学一些 C / C++ 基础,如果你要逆向的程序用了 C++ 的话那也得会,而且逆向可能需要会一点汇编。

你需要学一些 Windows 系统级 API 的使用,也就是 Win32 API 。

不妨以开发一个简单的 Windows 窗口应用为目标,但是一些操作系统的基本概念也是需要了解的,比如进程线程、文件 IO 、网络 IO 等等。

推荐书籍:

* Windows 程序设计 https://book.douban.com/subject/5273955/ 注意不是讲 Win8 的那个新版,是这个旧版,了解 Win32 API 和窗口
* Windows 系统编程 https://book.douban.com/subject/5323432/ 了解其他 Win32 API
* Windows 环境下 32 位汇编语言程序设计 https://book.douban.com/subject/24846626/ 了解窗口相关 API 和消息循环,学完之后你可以创建自己的窗口应用程序了
* 程序员的自我修养 链接、装载与库 https://book.douban.com/subject/3652388/ 进阶内容,了解 DLL 动态运行库的原理

由于以上书籍较老,里面的代码可能有些不能用了,自己写代码的时候可以参考最新的 MSDN ,例如: https://learn.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-createwindowa 看一下后面的样例
acbot
355 天前
有 Java 基础和经验

优势:c++ 基础学习方面应该很快,因为很多理念差不多可以触类旁通。

劣势:c/c++做一个应用如果仅仅只考虑 Windows 还好点,如果要考虑快平台那么框架(轮子)选型和学习对于没有经验的人来说是一个巨大挑战!不像 Java 和后续的新语言大家基本就用那么几个框架(轮子)做后续的应用。
janus77
355 天前
说一下学习理念的区别:
- 首先 java 是跨平台,但是开发有用户界面的 GUI 程序的话,不好跨平台,如果是专指 win 平台程序,那要先学 win32 API
- 然后就是,开发 GUI 程序也是需要一大套轮子的,类似 java 里面的 spring 全家桶吧,按钮怎么绘制、点击效果怎么设置这些,都不是系统级的,而是轮子级的 api 。这边商业级项目的话,一般是用 QT
- 剩下的么,就是 GUI 程序和 server 程序的架构理念了,在 GUI 程序里面,生命周期的概念、UI 适配、线程切换、缓存、数据传递、跨进程通信这些都是很重要的,server 程序一般都是永远存活,不需要考虑别的,一撸到底就行了。这个区别自己去在开发中感受
PepperEgg
355 天前
先学基础在考虑开发,c++这玩意不是直接上手就能开发软件的语言
ysc3839
355 天前
1. 个人没什么书或视频推荐,建议看看 Win32 基础的注册窗口类、创建窗口、创建控件、消息循环、窗口事件处理的示例代码,大概就能入门了。后续还可以看看 GDI 、Direct2D 等。
2. 建议先学 C++平台无关的部分,尤其是 C++11 之后的内容,了解智能指针、RAII 等,然后就可以看看前面提到的 Win32 API 用法,理解得差不多了就可以试试配合 wil https://github.com/microsoft/wil 调用 Win32 API ,wil 把一些常用的 Win32 API 封装成了 RAII 对象,避免了手动释放的麻烦,又不像 MFC 那样侵入性很大。
3. 按上述流程就可以边学边写了。
4. 建议至少理解 C/C++的指针和 C++的虚函数表,配合 IDA 反编译。
fromdark
355 天前
1. 如果有 C++ 基础的话就好说了
2. 我看的是《 Windows 核心编程》挺好的一本书,也挺老的,不过依然管用,讲的是 win 的一些机理,一些 api ,不过很少涉及代码层面,因为 win 不开源,所以里面有些东西也是作者自己猜测的(原话)
3. 另外还看了一本《 windows 高级调试》,感觉也还行,没看完
4. 如果要做产品的话,说白了就是做出 UI 界面,那就用 QT 吧
noErr
355 天前
不浪费时间,直接找个项目复刻
haohaolee
355 天前
想搞逆向,应该学汇编啊,要是逆向的程序不是 C++写的,而是 golang 或者 rust 写的,学了 C++用处不大。还是好好学习汇编吧,Windows 的话那就是 x86 汇编
skye
355 天前
windows 开发的话,还是 c#
zhuangzhuang1988
355 天前
先跟着官方 学习下 https://learn.microsoft.com/zh-cn/windows/win32/learnwin32/learn-to-program-for-windows
从 0 开始,绘图部分直接是 direct2d, 里面还牵扯到简单 c++封装。
macha
355 天前
现在投入搞 Windows 开发收益不高呀。
levelworm
354 天前
@jones2000 求问那些做病毒逆向的人都是怎么入门的?感觉需要很多年的功力啊😯
sslyd
354 天前
@levelworm 刷 crackme
seedhk
354 天前
非常感谢各位大佬们,人多我就不一一 @了。祝大家新年事事顺利,财源广进~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1005215

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX