windows 程序设计 第三章(上)

     娘的,今天晚上在阳台做饭把水管一脚踢爆了,水流到下面的住户的阳台,让个老娘们把我骂了一顿,本着做错事的原则,我装的很绅士还说了个对不起,擦,真是条纯汉子,能屈能伸。    

    大爷,别看我年轮小,我都给总结了,第三章主要可以用两句话来展开“创建和显示窗口,接受和处理消息”,真他娘的是个人才,多么简洁扼要,把这两句的内容搞懂了,就算入门了。

    第一句“创建和显示窗口”。

         首先,“创建”,想创建什么样的窗口?你连丫的创建什么窗口都不知道,还创建个毛,所以你首先明确自己要创建窗口的样式,但你也不能乱创建,并不是想干嘛就能干嘛。windws中用WNDCLASS结构体来存储你要创建窗口的样式,这样,用WNDCLASS结构体就既能让你创建符合windows外观类型的窗口,又限制了你天马行空的啥都想创建。

              所以第一步,你要定义一个WNDCLASS结构体变量,创建之后干啥? 丫的初始化呀,填充这个结构体变量中的值。

              WNDCLASS有10个字段,你可能说真他娘的多,我觉得你说的真有道理,我也觉得多,但是那群娃儿就是那么设计的,木办法啊兄弟们,忍忍吧,我这里有一个记忆方法,“打开一个窗口,把鼠标放进去”,ok,现在从这个窗口的左上角到右下角来分析。

     开始左上角第一个之前,拿一个姑娘对比,你要确定你喜欢的类型(style),上她之前你要给人家名分(lpszClassName),玩了之后你要告诉人家你是谁(hInstance)

     左上角第一个是图标,没错!WNDCLASS其中一个变量就是设定图标值,LoadIcon(),这个函数用的最多的就是两种情况。

              第一种:使用windows系统自身图标资源,LoadIcon(NULL,IDI_APPLICATION);就是这样,第一个参数是NULL,第二个是预定义好的ID,这个不用记住,直接百度就行。

              第二种:使用.RC文件中的ICON图标,也就是在VS资源文件中自定义的图标,这个图标都有个ID,LoadIcon(hInstance, MAKEINTRESOURCE(图标ID)); 其中hInstance就是WinMain函数参数中的那个hInstance,MAKEINTRESOURCE()可以自己百度一下。

     紧接着图标下面是菜单,有人说他娘的那不是标题吗,操,我说的是从左上角到右下角,不是从左到右,这个菜单就是指定菜单的名字,lpszMenuName,现在的程序不使用菜单,所以设置为NULL。

     紧接着菜单下面是客户区,客户区就需要设置背景色,(HBRUSH)GetStockObject(WHITE_BRUSH);我估计微软那帮人装修房子都喜欢自己刷墙,所以按他们的理解设置背景色就跟用刷子刷墙一样一样地,所以设置背景色就用画刷BRUSH,使用的什么颜色的画刷就能刷什么颜色的背景。GetStockObject该函数检索预定义的画刷、字体等的句柄。之所以前面加上(HBRUSH)强制转换,你想GetStockObject既获取画刷,又获取字体等的句柄,返回值肯定是一个通用值,为HGDIOBJ,这是一个图形图像的句柄。

     再往右下角看,是你刚才拉大或拉小窗口的鼠标,对,WNDCLASS有设置鼠标的字段,需要用LoadCursor,LoadCursor得用法跟LoadIcon一样一样滴,这里我们用LoadIcon(NULL,IDC_ARROW);

         好了差不多了,窗口句柄,名字,类型,图标,鼠标,背景,菜单设置了,还有三个字段,cbClsExtra,cbWndExtra和lpfnWndProc,其中“cbClsExtra,cbWndExtra“是为这个类结构和窗口结构预留的额外空间,一般都设置为0,lpfnWndProc是要设置回调函数,这个现在只需要记住设置回调函数就行了,要问为啥现在不解释,因为午夜12点了,锅锅我要睡觉了。

       到此,WNDCLASS各个字段都解释完了,可能有的新手觉得很麻烦,尤其是各个字段的名字,希奇古怪,比如lpfnWndProc,lpfn是啥个前缀啊,下面我copy了一个常用前缀,看看就容易记住了。                            

前缀含义
cchar,字符型
by               byte,无符号字符
iint,整形
x, y坐标
cx, cy长度
h句柄
llong,常整形
nshort,短整形
fn函数
wword,无符号短整形
dwdouble word,无符号长整形
ppointer,指针
sstring,字符串
szstring with zero,以\0结束的字符串
b或fb代表bool, f表示flag

          按上面的理解,lpfnWndProc,就是标识指向函数(fn)的长指针(lp),又有人可能问,妈的,什么是长指针?我们知道windows编程比较底层,涉及到很多很原始的代码,可能你还在娘胎一堆水的时候这些代码就有了,遥记当年电脑还是16位的时候,寻址范围为2^16地址范围之内的指针叫做短指针,寻址范围超过前述范围的叫做长指针,至于再往下搞什么是寻址范围,你可以看看王爽的《汇编语言》,想买这本二手实体书的找我!三成新,随便给点钱就行。后来你出生之后,电脑就变成32位了,并且使用“flat“内存模型,2^32地址范围(也就是4GB范围内的内存地址)内做寻址都不用修改段寄存器,就没有人再说长、短指针了,所以现在的C语言,c++很少提这个,统统都是叫指针。

                 根据以上内容我们到现在为止划拉的代码如下:

#include <windows.h>  

int WINAPI WinMain(HINSTANCE hInstance,   
		 HINSTANCE hPrevInstance, 
		 PSTR szCmdLine,
		 int iCmdLine)
{
	         
	TCHAR* className = "firstWindow";
	WNDCLASS wndClass;

    	wndClass.hInstance = hInstance;
	wndClass.style = CS_HREDRAW|CS_VREDRAW;
	wndClass.lpszClassName = className;
	wndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
	wndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
	wndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
	wndClass.cbClsExtra = 0;  
	wndClass.cbWndExtra = 0; 
	wndClass.lpszMenuName = NULL;
	wndClass.lpfnWndProc = callBackWndProc //暂时假设回调函数名字为callBackWndProc


}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
《Lazarus开发Android应用程序指南(2017新版)第二部分》是一本关于使用Lazarus开发Android应用程序的指南书籍。本书主要介绍了Lazarus的基本概念以及如何使用Lazarus开发Android应用程序的各种技术和工具。 该书的第二部分主要涵盖了以下几个方面的内容: 1. Lazarus的介绍:本章介绍了Lazarus的基本概念,包括其由来、特点和适用范围等。同时,还介绍了Lazarus在跨平台开发中的优势,帮助读者更好地理解和运用Lazarus开发Android应用程序的优势所在。 2. Lazarus的安装和配置:本章详细介绍了如何在Windows和Linux系统中正确安装和配置Lazarus环境,包括下载和安装Lazarus IDE、配置编译器和设置开发环境等。通过本章的学习,读者能够快速搭建Lazarus开发环境并开始进行Android应用程序的开发。 3. Android开发环境搭建:本章主要介绍了如何配置Lazarus环境以进行Android应用程序的开发。包括安装并配置Android SDK和NDK,以及通过Android虚拟设备或真机进行应用程序的调试和测试等。通过本章的学习,读者能够了解适用于Lazarus开发的Android环境搭建步骤以及调试技巧。 4. Lazarus中的Android应用程序开发:本章详细介绍了Lazarus中Android应用程序的开发过程,包括界面设计、事件处理、数据库访问、网络通信等。同时,还介绍了如何使用Lazarus自带的组件库以及第三方组件进行开发,方便读者进行Android应用程序的快速开发。 总结起来,本书第二部分是一本全面介绍Lazarus开发环境配置和Android应用程序开发的指南。通过学习本书,读者能够获得基本的Lazarus开发知识,并能够使用Lazarus开发Android应用程序。无论是初学者还是有一定经验的开发者都可以从本书中获得实用的开发技巧和经验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值