更新时间:2015-09-10 17:05:51浏览次数:1+次
吐槽一句,写了一半了,没保存,断电。。。无语了,重写。经历过几次,这次淡定了。是时间久了就忘记了这个习惯的重要性了。所以,一些习惯,看似琐碎,其实并不一定,只要你打自内心的做,又没有人逼你做的话,其实也是挺轻松的。刚才只是因为还没有写好标题,所以,写着写着就沉浸在里面了,没有保存。这个在我们写代码时,而特别要注意,否则,那更加痛苦。
对于习惯一说,在编写代码的时候,有些习惯也是要做好的,和时不时保存文档一个道理,发生的时候,你是猝不及防的。而代码中,甚至是隐秘的。不要觉得这些细节可以忽略,一旦你忽略,你就进入了危险状态。
好了,重新整理刚才的思路,重写吧。真的勇士,敢于直视惨淡的人生,敢于再次重来。哈哈哈。
在《Windows零基础入门:2.14 (1)窗口类使用完整代码演示和详细注释》中,有完整的代码,窗口类部分有了详细的注释。这里不重复贴代码。前面一节课,我们结合代码的使用,将窗口类的使用到创建窗口都讲述了一遍,相信你也深入了解了不少。而使用上,你动手写了,那也不存在问题。我们讲课做到让你深入理解,但是你一定要动手来写代码,培养手感,撸起来也爽些是吧。不然,写代码时你还去找键盘的字母在哪个位置,想来感觉,就见鬼了。然后写一个关键词就错误,你会爽,那我就什么话也不说了,跪地求饶了。
本节课我们就只讲窗口类结构体的第一个成员style。窗口类结构图里面的成员,都是窗口类的各个特性,讲明白这个结构图,你对窗口类也就很清楚了。我们不急着讲解这个成员如何使用,这都是很简单,也是很没有水平的。我们需要知道,这个成员所带来的深层次的知识和背景。区别菜鸟和大神,就可以从这里看的出来。菜鸟是刚学,什么都不懂,基本的语法都可以错的人,而码农就是只会使用不会思考的人,而大神则是会深入探究思考和挖掘的人。大神并不代表他技术水平一定有多高,而是他的思想水平有多高。对于会思考的人来说,是更容易成就大神的。而对于技术使用,大家都可以学会。
想成为大神,还是成为码农,只是一念之间,你想成为大神,你就不要急于求成,只学知道怎么用。别人不讲或者讲不了是别人的事情,我能讲如果你还不去深入,那就是你的问题咯。
我在学习的时候,始终都对一个概念模模糊糊的。经过大量的思考之后,也清晰多了,在本节课中,我会跟大家解释清楚。
这个疑惑就是,在窗口类结构体中有一个指定风格的成员,他会作用于用此窗口类创建的所有窗口,而注册好窗口类之后,我们用CreateWindow(XX,XX,窗口风格参数,...)创建窗口,在第三个参数中,还要指定窗口风格。为什么都要设置,是不是有点重复了呢?这两者到底有什么区别?对于这个问题在介绍基本的知识之后,再来解释。
当我不知道一个东西的时候,我习惯性的去MSDN查阅,而且还是英文的。这里最为正宗,解释最为到位。而网上的很多都是从这里摘抄出来的,支离破碎的。有的也是从这里翻译出来的。而翻译必然也有不到位的地方。所以,MSDN是Windows编程必备的一个工具。VS2015版的MSDN下载地址以及在线版的MSDN地址,请看《VS2015离线MSDN安装包下载地址和各版本在线MSDN入口地址》,对应的VS2015离线版MSDN安装方法和简要的查询方法介绍参见《VS2015离线MSDN安装方法图解》,在线查询MSDN的方法,参考《在线MSDN查询使用方法,如何使用在线MSDN》。至于英文看不懂,不要紧,自己下载英语单词查询软件,启动“取词”和“画译”功能,就可以哪里不懂点哪里了。软件的使用我不解释了,这个你用了就会了。
我们先来看看窗口类结构体的定义:
typedef struct tagWNDCLASS {
UINT style;
WNDPROC lpfnWndProc;
int cbClsExtra;
int cbWndExtra;
HINSTANCE hInstance;
HICON hIcon;
HCURSOR hCursor;
HBRUSH hbrBackground;
LPCTSTR lpszMenuName;
LPCTSTR lpszClassName;
} WNDCLASS, *PWNDCLASS;
我们来看窗口类结构体的第一个成员style。它是UINT类型,表示的是窗口类风格。UINT类型,对于刚接触Windows编程的朋友来说看起来很别扭,确实。我刚开始接触,也很不喜欢。不过,看多了就习惯了。也觉得这样其实挺好的。typedef int INT;
typedef unsigned int UINT;
typedef unsigned int *PUINT;
我们来看一下定义,你可以在代码中,写UINT几个字,然后把光标放在放在这个几个字上面,然后右击,“馋看定义”,就可以看到上面的这几句代码。你要看其他的类型、API函数等,只要你不熟悉的,都可以用这种方式来查看。然后你就看到了你熟悉的样子。然后就理解了这个奇怪的样子。#define CS_VREDRAW 0x0001
#define CS_HREDRAW 0x0002
#define CS_DBLCLKS 0x0008
#define CS_OWNDC 0x0020
#define CS_CLASSDC 0x0040
#define CS_PARENTDC 0x0080
#define CS_NOCLOSE 0x0200
#define CS_SAVEBITS 0x0800
#define CS_BYTEALIGNCLIENT 0x1000
#define CS_BYTEALIGNWINDOW 0x2000
#define CS_GLOBALCLASS 0x4000
这是所有的定义,根据上面送给你的钛金眼镜,你可以查看到这些定义。这里使用define宏定义,将这些数字定义为一个宏,方便记忆和使用。看着这些数字,是不是很有规律。你把他们展开为二进制,你会发现,一种风格只有一个位是1,表示这个位代表这种风格。而我们在操作的时候,就直接使用宏来进行位操作。这样就可以将多个位拼在一起,或者从已有的风格除去一个位,即去掉一个风格。这一点,对于所有的这类都有用哦,都是这个模式。相关资讯