我为什么学习Windows编程
前一段时间在看TCP/IP,在图书馆里面找了不少的书,其中有几本书还是不错的。比如:
《Windows网络与通信程序设计(第二版)》 王艳平著
《WinSock网络编程经络》 张会勇著
在看第一本书的时候,因为后几章涉及到驱动编写的问题,所以我就先去找了本驱动的书看了看,顺手翻到一本潘爱民先生编写的《Windows内核原理与实现》。看了觉得还是很不错的。
我学Windows的时间应该有一年了吧,在这其间,我总是觉得自己在Windows上,能进行一些程序的编写,但是总是觉得,有点难以触及核心。像单片机那种非常简单的平台,程序基本可以说是想怎么写就怎么写,无拘无束。而在Windows平台上,总是觉得自己的技术水平总是在门口盘旋,难以进一步深入。我看过侯俊杰的著作《深入浅出MFC》,也看过了Windows经典之一的《Windows程序设计(第五版)》,还有WindowsAPI的书籍,写过一些Windows下的程序,比如一些小游戏和最简单的Winsock程序。但是,始终觉得自己的水平没有再次的进步。
我为什么学习Windows?
我接触过的第一个操作系统,好像是Windows95,那个时候还是在小学,也就是2000年初的时候。那个时候小,知道的很有限,去上机的时候,也就知道打游戏。1分钟能用标准拼音输入法敲出来10个字就已经算是很了不起了。那个时候计算机给我的感觉很神秘,而且Windows操作系统是我第一个接触到的系统,也是当时唯一接触到的操作系统,因此我当时很天真的认为,所有的电脑开机都会出现一个Windows的四色旗帜图标,也就只有Windows这一种系统。当然,准确来讲,我当时只知道电脑,并不知道什么是操作系统。
后来上了初中,初一的时候一次和同学聊的时候,知道了XP这个系统。当时稍微有了点概念。那个时候也就只知道写题做作业,准备中考等,其余的时间并没有什么机会接触到电脑。至于学校的上机课程,就是上4399小游戏上玩一玩,那个时候我还喜欢上一款名为新合金弹头的游戏。不过这就是全部了,初中的时候,我不去网吧,就算是去了也就是打游戏。
高中的时候,我接触电脑的机会就比较多了。原因很简单,老爹老妈对我去网吧不再管了。那个时候我迷上了一款单机游戏,《暗黑破坏神2》。当时还玩的风生水起,不亦乐乎。每次都是复制存档,让后再拷回手机里面。而且也就是我在高中的时候,首次注册了百度账号,在百度知道里面混,开始成为了一条小网虫。至于程序设计,高一的时候好像学过VB,不过,完全没有后续。毕竟在高中,高考最大。
所以大学之前,我只知道Windows,知道一般组装机买了还需要装系统。有一次去买显卡还因为自己有限的计算机知识被人鄙视了。呵呵。
上了大学之后,我才开始知道Linux,Unix等操作系统。也是刚上大学的时候,才知道windows之前还有个dos。后来买了笔记本,用的操作系统自然就是Windows。在图书馆啃书的时候,才渐渐的了解到计算机的基本架构,也是那个时候我知道了冯诺依曼这个名字。在学数字电路的时候,真正的理解了计算机的工作原理,自学微机原理的时候,知晓了计算机里程序的执行方式,知道了什么是机器码,什么是汇编代码。大一学C语言的时候,真是一头雾水,什么都不懂,用着VC6.0天天写控制台程序。老师也不多介绍几个好用点的开发工具,最开始看书用的编译器居然还有89年的TurboC。我大学之前和大一所在的计算机文化环境实在是不怎么样。大学之前是几乎没有。上了大学,又有点落后。后来自己一点点学习,借助网络和书籍,以及学长的帮助,才一点点的积累,能有今天这点三脚猫级的水平。
所以到目前为止,我用的最多的平台,都是Windows。Linux也装过,不过是在虚拟机上装过的,没怎么好好玩。Windows是我最熟悉的系统,所以在选在PC程序设计的时候,我首选Windows并不偶然。
另外,貌似大多数的黑客玩的系统平台也都是Windows。大一大二的时候也梦想过成为黑客,去书店里里面翻过书。奈何水平太菜,连基础的计算机知识都没有,再扯上点API,服务,DLL等概念后,完全看不懂,就自然放弃了。现在还好一些,至少不是完全看不懂了。
虽然对于黑客技术不是很了解,但是我比较清楚对计算机非常熟悉后的能量。虽然Windows并不开源,但是有些地方做的并不封闭,比如DLL线程注入,添加自己的服务,注册表修改API,Hook等。都提供了很多的监控功能。所以在Windows平台上才会有那么多的病毒,这么多的攻击。Android的情况貌似也差不多。所以如果Windows下的系统编程学好了,能做的事情肯定是非常多的。而且我每天都在使用Windows系统和Windows下的各种软件,因此我觉得我很有必要好好学习一下这个与我日常生活密不可分的操作系统。
另外就是,学编程还能混口饭吃。
所以,我选择了Windows下的程序设计。今天看了Windows的内存管理这一部分,看了之后觉得很不错,虽然没能完全理解,但是至少这些东西之前我在百度上还真的没搜到如此详细的资料。网上有些东西感觉就是有点支离破碎。一步一步脚踏实地,到了某一天就不是菜鸟,而能独当一面了。
我为什么学习Windows编程的更多相关文章
- 有一定基础的 C++ 学习者该怎样学习 Windows 编程?
人的心理有个奇异的特性:一项知识一旦学会之后,学习过程中面临的困惑和不解非常快就会忘得干干净净,似乎一切都是自然而然,本来就该这种.因此,关于「怎样入门」这类问题,找顶尖高手来回答,未必能比一个刚入门 ...
- 学习windows编程 day2 之滚动条使用
相关函数: setscrollrange,setscrollpos,getscrollrange,getscrollpos 使用滚动条时我们需要进行的操作: 1.初始化滚动条范围和位置 在窗口创建时W ...
- 学习windows编程 day1
#include <windows.h> #include <strsafe.h> /* 任务:去掉标题栏和边框 */ //#define LineHeight 15 这是自己 ...
- 学习windows编程 day6 之处理鼠标移动
#define POINT_MAX 1000 LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPara ...
- 学习windows编程 day4 之 绘制随机矩形和peekMessage
#include <windows.h> #include <strsafe.h> LRESULT CALLBACK WndProc(HWND hwnd, UINT messa ...
- 学习windows编程 day4 之 自定义映射
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...
- 学习windows编程 day4 之视口和窗口
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...
- 学习windows编程 day4 之 盯裆猫
写着写着就困了.... 看这些测量数据就算了,是对各种函数的练习 #include <windows.h> LRESULT CALLBACK WndProc(HWND hwnd, UINT ...
- 学习windows编程 day4 之 多边矩形填充
#include <windows.h> #include <math.h> LRESULT CALLBACK WndProc(HWND hwnd, UINT message, ...
随机推荐
- 复选框回显、全选、非全选、cookie处理数据、json数组对象转换处理学习笔记参考的页面
<%@include file="/common/head.jsp"%> <%@ page contentType="text/html; charse ...
- 【C++】const、volatile不能修饰没有this指针的成员函数
一般所有的成员函数都只有一个复本,当不同的对象调用成员函数时,为了区分是哪个成员在调用,会传入this指针. 当调用有const.volatile修饰的成员函数时,会相应的传入一个const.vola ...
- 剑指offer 面试题5 : 从尾到头打印链表
题目: 输入一个链表的头结点,从尾到头反过来打印出每个节点的值.链表结点定义如下: struct ListNode { int m_nKey; ListNode* m_pNext; }; 思路: 通常 ...
- Win10系统解决C盘分区限制一半的问题
1,按照网上的方法还不行,如链接 2,安装如下软件,里面有激活码,链接 链接:https://pan.baidu.com/s/14ifYpnCMGwJIbgykTYQR6Q 密码:whh3 3,安装并 ...
- PHP的普通传值与引用传值以及unset
首先,要理解变量名存储在内存栈中,它是指向堆中具体内存的地址,通过变量名查找堆中的内存; 普通传值,传值以后,是不同的地址名称,指向不同的内存实体; 引用传值,传引用后,是不同的地址名称,但都指向同一 ...
- Jmeter 监控远程服务器
压力测试中如何监控服务器的性能呢? 性能选取哪些指标? 环境配置: Jmeter安装路径:E:\SOFEWARE\apache-jmeter-3.1: 需要将JMeterPlugins-Extras. ...
- (转帖)关于easyui中的datagrid在加载数据时候报错:无法获取属性"Length"的值,对象为null或未定义
结贴说明: 很感谢sp1234等人的热心帮忙和提醒,现在我主要说明下问题所在: 首先我在独立的js文件中,直接把测试数据loaddata进去datagrid是没有问题的.var kk = {" ...
- Retrying Operations using Spring's RetryTemplate
If your application is using Spring then it is easier to use the Spring Framework's RetryTemplate. T ...
- 【二分答案】【字符串哈希】bzoj2084 [Poi2010]Antisymmetry
显然只有偶数长度的串符合题意,并且如果一个串符合题意,那么从其首尾各截掉一个字符也符合题意. 于是枚举中心,二分可以向左右扩展的最远距离,累计答案. #include<cstdio> #i ...
- 【KM】POJ2195/HDU1533-Going home
//最近没什么时间quq据说长得帅的人都在切八中,然而长得丑的人只能水水裸题 [题目大意] 给出一张地图及人和房屋的位置,求出每个人回到不同房屋所具有的最小代价和. [思路] 最小权匹配,先O(n^2 ...