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";