浅谈API学习经验

API学习经验之谈___1

问题1____句柄

相信这个"东西"足以让各位朋友郁闷很长一段实际在"云里雾里"中(小生可能更严重)

其实,这是一个最不足以让你去深究的东西,先听听"大师级人物"(个人认为)罗云彬老师在<<Windows 环境下32位汇编语言程序设计>>(好书啊!~_~)一书中对它的定义:

句柄只是一个数值而已,它的值对程序来说是没什么有意义的,它只是Windows用来表示资源的编号而已,所以只有Windows才知道怎么使用它来引用各种资源!

明白了吗?(鬼才明白~_~!)

好,举例来说,屏幕上已经有10个窗口,Windows把他们从1道10编号,应用程序又建立了一个窗口,现在Windows把它编号位11,然后把11当做窗口句柄返回个应用程序,应用程序并不知道11代表的是什么,但在操作窗口的时候,把11当作句柄传给Windows,Windows自然可以根据这个数值查出是哪个窗口.当该窗口关闭的时候,11这个编号就作废了.第二次运行的时候,如果屏幕上又有5个窗口,那么现在句柄可能就是6了,所以,应用程序不用关心句柄的具体数值是多少.打个比方,可以把句柄当做是商场中寄放包包时营业员MM给的纸条,纸条上的标号代表什么,用户不用去了解,但把它给营业员MM时,她自然会给你正确的包包啦!

明白了吗?(要是还不明白就改行算了!你小子的天赋不在学计算机上~_~!)

问题2____新建项目(以VC.NET/6.0为例)

要想编译一段API代码,可以考虑走明星路线(我就是我生活中的明星,呵呵,说笑)

VC.NET

在新建项目中选择"Win32项目"为模板,前提是你选择Visual C++为项目类型

填了名字下一步后,停下,选择应用程序设置,给附加选项的空项目打上钩

好了,你就可以随心所欲了,每次看到这个界面,我就忍不住欲火焚身啊!(不要误解,是写程序的欲火)

我先在源文件里添加了一个Cpp文件,叫做first.cpp,为了让你们爽下,带码也考给你们算了,要是觉得太简单,不要K我啊!(我躲):

#include <windows.h>

#include <string.h>

#include <stdlib.h>

#include <stdio.h>

#include <assert.h>

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

HDC hdc;

HDC hdcmem;

HBITMAP hBm;

BITMAP bm;

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow)

{

HWND hwnd;

MSG msg;

WNDCLASS wndclass;

char lpszClassName[]=" ";

char lpszTitle[]="Example";

wndclass.cbClsExtra=0;

wndclass.cbWndExtra=0;

wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);

wndclass.hCursor=LoadCursor(NULL,IDI_APPLICATION);

wndclass.hIcon=LoadIcon(NULL,IDC_ARROW);

wndclass.hInstance=hInstance;

wndclass.lpfnWndProc=WndProc;

wndclass.lpszClassName=lpszClassName;

wndclass.lpszMenuName=0;

wndclass.style=0;

if(!RegisterClass(&wndclass))

{

MessageBeep(0);

return FALSE;

}

hwnd=CreateWindow(lpszClassName,

lpszTitle,

WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT,

CW_ USEDEFAULT,

CW_USEDEFAULT,

CW_USEDEFAULT,

NULL,NULL,

hInstance,NULL);

hBm=LoadBitmap(hInstance,"tomato");

GetObject(hBm,sizeof(BITMAP),(LPVOID)&bm);

ShowWindow(hwnd,nCmdShow);

UpdateWindow(hwnd);

while(GetMessage(&msg,NULL,0,0))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

return msg.wParam;

}

LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)

{

PAINTSTRUCT ps;

switch(message)

{

case WM_CREATE:

hdc=GetDC(hwnd);

hdcmem=CreateCompatibleDC(hdc);

ReleaseDC(hwnd,hdc);

case WM_PAINT:

//back=LoadBitmap(hInstance,

hdc=BeginPaint(hwnd,&ps);

SelectObject(hdcmem,hBm);

BitBlt(hdc,180,80,bm.bmWidth,bm.bmHeight,hdcmem,0,0,SRCCOPY);

EndPaint(hwnd,&ps);

break;

case WM_DESTROY:

DeleteObject(hBm);

PostQuitMessage(0);

break;

default:

return DefWindowProc(hwnd,message,wParam,lParam);

}

return 0;

}

然后我在资源文件里添加一个.rc的文件(在添加新项里有),取名叫pic7.rc,接着双击pic7.rc就可以看到资源视图,里面有个文件夹就叫pic7.rc,右击,选择添加资源,选择Bitmap,再导入一张.bmp图片(system32这个文件夹下这种图片很多的),右击导入的图片,可以看到选项属性,你把它的ID改为"tomato"(我随便找了张tomato的图片,你也可以把它定义为apple啊,或者banana啊什么的都行,只是你要在程序中改下它的名字就行了)好了,perfect!你运行下看看,有了吧!

现在介绍API的书有,介绍VC.NET的书也有,就是没有如何实际写程序时改怎么用的书!连基本的操作都不交,程序就没法编译了,程序都没法去验证,怎么叫人家继续学下去呢?中国人注重理论知识一定要过硬,不过就我个人认为还是老外的注重实际操作的学习方式更值得我们去提倡啊!

问题3____数据类型

很多人搞不懂API里面"乱七八糟"的数据类型,哎呀,其实是你看的或写的太少的缘故罢了!

这个我不说了,虽然确实是个问题,不过有点脑子的人都知道,上网可以找嘛,真的很多的,要是真的找不到,没办法,问我好了(我的个人隐私QQ:275913977)

暂时想不到什么问题了,反正你只要知道程序的入口是int WINAPI WndMain(HINSTANCE,HINSTANCE,LPSTR,int){}

当事件发生了,就要用到switch(message){case}结构了,因为发生了不同的事件要用不同的方式去处理,这个过程是在函数LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM)里执行的,主要是(WndProc)!

(0)

相关推荐

  • 浅谈25年Linux内核开发经历总结出来的九条经验

    原文:9 lessons from 25 years of Linux kernel development 作者:Greg Kroah-Hartman 翻译:雁惊寒 Linux内核社区在2016年庆 ...

  • 浅谈每日可在蜀门中获得金钱途径与经验

    浅谈每日可在蜀门中获得金钱途径与经验 步骤/方法 01 以上班族.学生族,以及老板无时间族. 咱来算算.每天蜀门为我们准备了多少金子呢? 02 接下来就是系统算是送给我们的吧. 那就是跑步了. 每星期 ...

  • 浅谈蜀门如何管理帮派的一些经验与看法

    浅谈蜀门如何管理帮派的一些经验与看法 步骤/方法 01 本人玩蜀门也有大半年了,也建立了帮派,升级到10级,一路走来,也是很辛苦,建设的帮派经费,基本都是靠我自己,到后期帮派的人都将义气,都捐钱,一次 ...

  • 浅谈蜀门青城PK方面的经验和手法总结

    浅谈蜀门青城PK方面的经验和手法总结 步骤/方法 01 镰刀如何PK呢 切磋方面,点切磋 和对方切磋 首先出 一定要尽力先出招 力劈华山 晕对手4秒(这里出手一定要快不然连不下去容易被对方晕住) 然后 ...

  • java-面试经验浅谈

    很多刚入行的java开发者经常面临面试,不知道面试的范围,不了解实际开发中的侧重点,以及企业面试官的面试侧重点.下面是我根据自己的经历总结的我觉得挺经典.全面的java面试问题.希望对初学者有帮助 总 ...

  • 老司机浅谈linux系统学习技巧

    操作方法 01 Linux起源于20世纪70年代,是一种优秀的操作系统系统.初次接触到linux这个系统是在大学期间,这样才发现除了windows外的另外一个有趣系统.开始抱着好奇的心态去了解,随着深 ...

  • "图"说天下:浅谈图片搜索功能

    随着360综合搜索不断地开拓进取之后,新上线了图片搜索功能。百度图片搜索每天的百度预计流量为781万4070,这还仅仅只是百度来的预计流量,实际上更多。搜索引擎市场的竞争是多元化的,不仅仅是搜索结果的 ...

  • 营销手法——浅谈“捆绑销售”

    操作方法 01 最近上映了一部名叫"无人区"的电影不知道大家有没有去看,之所以想写这篇文章的原因是这部电影里面的一句台词给了我启发--"捆绑销售"相信做营销这行 ...

  • 《沧海笑》攻略 宝石镶嵌浅谈

    操作方法 01 简介:<沧海笑>攻略 宝石镶嵌浅谈 工具/原料:<沧海笑>GCH0710 方法/步骤: 02 (宝石分类) 红宝石:增加攻击力,可镶嵌在[武器]上. 黄玛瑙:增 ...