Windows编程一日一练(1)
生活随笔
收集整理的這篇文章主要介紹了
Windows编程一日一练(1)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先,編程和旅游是我個人人生兩大愛好,所以,每天空閑的時候我喜歡敲敲代碼,或者看看別人寫的程序,實在是很愜意。今天想看看window編程,爭取堅持每日一練。
? ? ? ?windows程序主要是由微軟提供的windows API以及c語言來編寫API函數都包含在<windows.h>頭文件中,當然有的人喜歡用更快捷的方式,MFC之類的,但個人感覺從頭開始的還是多看點基礎的東西為好。今天主要了解一下windows編程最基礎也很重要的知識。
? ? ?句柄是windows編程中最常用的術語,它是用來標識各種項目的,如實例(INSTANCE),模塊(MODULE),文件(FILE),任務(TASK),內存塊(BLOCK OF MEMORY),菜單(MENY)等。句柄與指針并不相同,句柄是一個32位整數,WIN32中用于標記某個系統或進程的對象,可以理解為對象索引,跟內存地址沒有必然的聯系,從句柄到對象內存地址存在一種映射關系,因此通過句柄可以方便的訪問各種對象和資源。指針對應著一個數據或對象在內存中的存儲地址,得到了指針就可以自由地修改該數據。Windows并不希望一般程序修改其內部數據結構,因為這樣太不安全。所以Windows給每個使用GlobalAlloc等函數聲明的內存區域指定一個句柄,平時只是在調用API函數時利用這個句柄來說明要操作哪段內存。?
? ? windows編程主要是操作API函數, API函數是開發Windows應用程序最底層的東西。隨著Windows系統的不斷升級,與系統相關的API函數也在不斷的變化,最明顯的變化是有原來的16位變成了32位。有的API函數可以在每個版本的Windows系統中運行,有的則不可以,例如實現窗體半透明效果的SetLayeredWindowsAttributes函數,他只能在Windows2000及以后的系統下運行。在調用API函數時,通常在函數前加::,表示調用全局函數。API函數有很多種,可分為窗口管理,圖形設備接口,網絡服務,系統服務,國際特性幾個部分。API函數都封裝在動態鏈接庫中,對API函數的調用都需要加載動態鏈接庫,常用的API函數大都封裝在KDRNEL.dll、GDL.dll、USER.dll等幾個動態鏈接庫中,但在Microsoft Visual C++中調用API函數并不需要額外加載動態鏈接庫的代碼,因為Visual C++會自動與常用的動態鏈接庫相連。
下面是API函數常見的數據類型
? ?HANDLE是空類型指針,可以指向任何類型的數據;
? ? ?WORD即字,表示16位無符號整型;
? ? ?DWORD表示32位無符號整型,是WORD的兩倍;
? ? ?LPTSTR表示一個指針,指向32位的字符串;
? ? HWND表示窗口句柄,是一個指向窗口內存地址的指針,窗口可以是容器,也可以是各種控件。對于主窗口,通過CreateWindowEx()創建窗口的時候會返回該窗口的HWND。windows還提供API函數專門用來獲取窗口句柄,HWND WIN FindWindow(LPCTSTR lpClassName,LPCTSTR lpWindowName),lpClassName為窗口的類名,lpWindowName為窗口的標題名,二者只需一個便可,另一個可用NULL。
最后附上如何關閉窗口的簡單代碼,今天的學習就到這了
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
int main()
{
? ? HWND hwnd;
? ? hwnd=FindWindow(NULL,"1.txt - 記事本");
? ? SendMessage(hwnd,WM_CLOSE,0,0);
? ? system("pause");
? ? ? ? return 0;
}
??? 與50位技術專家面對面20年技術見證,附贈技術全景圖
? ? ? ?windows程序主要是由微軟提供的windows API以及c語言來編寫API函數都包含在<windows.h>頭文件中,當然有的人喜歡用更快捷的方式,MFC之類的,但個人感覺從頭開始的還是多看點基礎的東西為好。今天主要了解一下windows編程最基礎也很重要的知識。
? ? ?句柄是windows編程中最常用的術語,它是用來標識各種項目的,如實例(INSTANCE),模塊(MODULE),文件(FILE),任務(TASK),內存塊(BLOCK OF MEMORY),菜單(MENY)等。句柄與指針并不相同,句柄是一個32位整數,WIN32中用于標記某個系統或進程的對象,可以理解為對象索引,跟內存地址沒有必然的聯系,從句柄到對象內存地址存在一種映射關系,因此通過句柄可以方便的訪問各種對象和資源。指針對應著一個數據或對象在內存中的存儲地址,得到了指針就可以自由地修改該數據。Windows并不希望一般程序修改其內部數據結構,因為這樣太不安全。所以Windows給每個使用GlobalAlloc等函數聲明的內存區域指定一個句柄,平時只是在調用API函數時利用這個句柄來說明要操作哪段內存。?
? ? windows編程主要是操作API函數, API函數是開發Windows應用程序最底層的東西。隨著Windows系統的不斷升級,與系統相關的API函數也在不斷的變化,最明顯的變化是有原來的16位變成了32位。有的API函數可以在每個版本的Windows系統中運行,有的則不可以,例如實現窗體半透明效果的SetLayeredWindowsAttributes函數,他只能在Windows2000及以后的系統下運行。在調用API函數時,通常在函數前加::,表示調用全局函數。API函數有很多種,可分為窗口管理,圖形設備接口,網絡服務,系統服務,國際特性幾個部分。API函數都封裝在動態鏈接庫中,對API函數的調用都需要加載動態鏈接庫,常用的API函數大都封裝在KDRNEL.dll、GDL.dll、USER.dll等幾個動態鏈接庫中,但在Microsoft Visual C++中調用API函數并不需要額外加載動態鏈接庫的代碼,因為Visual C++會自動與常用的動態鏈接庫相連。
下面是API函數常見的數據類型
? ?HANDLE是空類型指針,可以指向任何類型的數據;
? ? ?WORD即字,表示16位無符號整型;
? ? ?DWORD表示32位無符號整型,是WORD的兩倍;
? ? ?LPTSTR表示一個指針,指向32位的字符串;
? ? ?LPCTSTR表示指針,指向32位常量字符串;
??? LPRESULT:32位數值,作為窗口函數或CALLBACK函數的返回值
? ? HWND表示窗口句柄,是一個指向窗口內存地址的指針,窗口可以是容器,也可以是各種控件。對于主窗口,通過CreateWindowEx()創建窗口的時候會返回該窗口的HWND。windows還提供API函數專門用來獲取窗口句柄,HWND WIN FindWindow(LPCTSTR lpClassName,LPCTSTR lpWindowName),lpClassName為窗口的類名,lpWindowName為窗口的標題名,二者只需一個便可,另一個可用NULL。
最后附上如何關閉窗口的簡單代碼,今天的學習就到這了
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
int main()
{
? ? HWND hwnd;
? ? hwnd=FindWindow(NULL,"1.txt - 記事本");
? ? SendMessage(hwnd,WM_CLOSE,0,0);
? ? system("pause");
? ? ? ? return 0;
}
??? 與50位技術專家面對面20年技術見證,附贈技術全景圖
總結
以上是生活随笔為你收集整理的Windows编程一日一练(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hbase1.1.1 连接集群_Hado
- 下一篇: Vue 监视属性 watch