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