一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - 易語言 - 易語言API高級技巧教學

易語言API高級技巧教學

2022-02-25 15:42月下賞禪 易語言

在本篇文章中小編給大家整理了關于易語言API高級技巧教學內容,需要的朋友們參考下

首先聲明,本文的讀者該賣是:具有相當的易言語基礎的、能較熟練地把常用的的API從VB/C聲明轉換到易言語DLL命令的易言語喜歡者。

1,使用指針

易言語中出于安定、方便考慮,沒有直接提供指針,這正在進行一些高級 縱時不是很方便,固然有一些第三方支撐庫可以取出變量指針(比如我的eLib++ 注:該支撐庫系Delphi開發,本人已開放源代 ,你可以到易言語下載區瞧瞧)但是僅僅為了這個 縱就帶上一個支撐庫不太值得。實在用一個API,加上一些技術就可以欺騙Windows和易言語,讓它們報告你一個變量的指針。
這個API是lstrcpyn。用過C開發Windows下的步驟的朋友可能對這個API相比熟識,就是字符串拷貝。正在windows下取代C準則庫函數strncpy的。字符串拷貝怎樣能獲得變量指針呢?秘密就正在這個API的返回值:

瞧瞧MSDN:“If the function succeeds, the return value is a pointer to the buffer”

該函數把第二個參數指定的字符串雙制到第一個參數指定的字符串,第三個參數指定雙制的長度。假如雙制成功,返回第一個參數(緩沖區buffer)的地點。瞧到了嗎?它返回第一個參數的地點?。∧敲次覀儼研枨笕〉攸c的變量給它的第一個參數,然后想要領讓它雙制成功,它不就返回了那個變量的地點了嗎?

界說一個DLL命令如下:

Dll命令:取文本指針

返回值類型:整數型

正在Dll庫中的命令名:lstrcpyn

參數:欲取其指針的文本 數據類型:文本型 <傳址>

參數:欲取其指針的文本 數據類型:文本型 <傳址>

參數:保存 數據類型:整數型 備注:0

這樣挪用:

文本1 = “abcdefg”

指針1 = 取文本指針 (文本1, 文本1, 0)

把文本1雙制到自己,雙制長度為0字節(也就是什么都不雙制),然后返回文本1的指針。就這么簡略。先報告Windows我要雙制一個文本到某個內存地點,但同時報告它我什么都不雙制,它實踐上幫你取出了這個文本的指針。

上面的例子是取文本的指針,其他類型的變量也一樣的,由于正在API內部(實在是正在內存中)什么類型的變量都體現為一塊內存區域,原理是一樣的。但是易言語是強制類型的言語,所以這次要騙騙易言語了,呵呵,再界說這個API的一個新版本,把它的參數界說成你想要的類型就可以了。

Dll命令:取整數指針

返回值類型:整數型

正在Dll庫中的命令名:lstrcpyn

參數:欲取其指針的整數 數據類型:整數型 <傳址> 備注:一定要傳址

參數:欲取其指針的整數 數據類型:整數型 <傳址> 備注:一定要傳址.重雙一次

參數:保存 數據類型:整數型 備注:0

2,非凡的結構用字節集代替

Window98及其后的 縱零碎提供了一個非常棒的API :GradientFill,利用這個API可以方便地畫出漸變的效果。

這個API倒不是很麻煩,參考MSDN我們很快就可以正在易言語中界說出這個DLL命令:(以漸變填充矩形為例)

Dll命令:GradientFill

返回值類型:邏輯型

Dll庫文件名:Msimg32.dll

正在Dll庫中的命令名:GradientFill

參數:hDC 數據類型:整數型

參數:pVertex 數據類型:TRIVERTEX

參數:dwNumVertex 數據類型:整數型

參數:pMesh 數據類型:GRADIENT_RECT

參數:dwNumMesh 數據類型:整數型

參數:dwMode 數據類型:整數型

其中TRIVERTEX 和GRADIENT_RECT時自界說的數據類型:

自界說數據類型:TRIVERTEX

成員:x 數據類型:整數型

成員:y 數據類型:整數型

成員:Red 數據類型:短整數型

成員:Green 數據類型:短整數型

成員:Blue 數據類型:短整數型

成員:Alpha 數據類型:短整數型

自界說數據類型:GRADIENT_RECT

成員:UpperLeft 數據類型:整數型

成員:LowerRight 數據類型:整數型

憑據MSDN的闡明,基礎沒有標題,但是假如你挪用這個函數,你不會成功的。為什么?我報告你緣由正在TRIVERTEX的界說上。你或許會說,這個沒有標題啊,MSDN上界說如下:

typedef struct _TRIVERTEX {
LONG x;
Long y;
COLOR16 Red;
COLOR16 Green;
COLOR16 Blue;
COLOR16 Alpha;
}TRIVERTEX, *PTRIVERTEX;

C言語的LONG 和Long正在Windows 32位下是32位,對應于易言語“整數型”,COLOR16為十六位,對應于易言語的“短整數型”沒有標題?。∧羌偃缥以賵蟾婺?,易言語中的自界說數據類型的成員均是四字節對齊的,你該理解了吧。是的,易言語中的自界說數據類型的成員均是四字節對齊的,假如不敷四字節,會主動對齊到四字節的。具體到上面的界說,Red,Green,Blue,Alpha固然被界說為“短整數型”但是正在易言語內部,它們均被擴充為“整數型”了。這就是題手法泉源。解決的要領就是用字節集代替自界說數據結構。易言語的字節集不存正在四字節對齊的標題。

Dll命令:GradientFill
返回值類型:邏輯型
Dll庫文件名:Msimg32.dll
正在Dll庫中的命令名:GradientFill
參數:hDC 數據類型:整數型
參數:pVertex 數據類型:字節集
…… ………………..

這樣界說就可以了。為了方便地生產所需求的字節集數據,我有界說了一個子步驟:

子步驟:TRIVERTEX到字節集
返回值類型:字節集
備注:由于內存對齊的緣由,務必把TRIVERTEX類型轉換為字節集才可以挪用API成功

參數:VertEX 數據類型:TRIVERTEX <數組>

局部變量:元素個數 數據類型:整數型
局部變量:變量 數據類型:整數型
局部變量:數據 數據類型:字節集

元素個數 = 取數組成員數 (VertEX)
計次循環首 (元素個數, 變量)
數據 = 數據 + 到字節集 (VertEX [變量].x)
數據 = 數據 + 到字節集 (VertEX [變量].y)
數據 = 數據 + 到字節集 (VertEX [變量].Red)
數據 = 數據 + 到字節集 (VertEX [變量].Green)
數據 = 數據 + 到字節集 (VertEX [變量].Blue)
數據 = 數據 + 到字節集 (VertEX [變量].Alpha)
計次循環尾 ()
返回 (數據)

具體的請瞧附帶的例程

其他具有類似特 (參數或結構中有非四字節的)的API都可以用上述的要領來變通解決。

原文鏈接:https://blog.csdn.net/bylost/article/details/62216878

延伸 · 閱讀

精彩推薦
  • 易語言易語言關于程序進程和線程的基礎知識

    易語言關于程序進程和線程的基礎知識

    今天小編就為大家分享一篇關于易語言關于程序進程和線程的基礎知識,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起...

    三葉資源網6662022-02-24
  • 易語言易語言設置進度條邊框樣式的方法

    易語言設置進度條邊框樣式的方法

    今天小編就為大家分享一篇關于易語言設置進度條邊框樣式的方法,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨...

    易語言幫助手冊4422022-01-20
  • 易語言一步一步跟我學易語言之第二個易程序菜單設計

    一步一步跟我學易語言之第二個易程序菜單設計

    今天小編就為大家分享一篇關于的一步一步跟我學易語言之第二個易程序菜單設計,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要...

    易語言幫助手冊7092021-06-17
  • 易語言實例操作易語言載入窗口

    實例操作易語言載入窗口

    在本文中小編給大家整理的是關于易語言載入窗口的教程和步驟內容,需要的可以跟著學習下...

    易語言教程網19162022-03-02
  • 易語言易語言獲取指定磁盤的名稱

    易語言獲取指定磁盤的名稱

    今天小編就為大家分享一篇關于易語言獲取指定磁盤的名稱,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來...

    易語言幫助手冊12662022-01-04
  • 易語言易語言生成exe文件的方法

    易語言生成exe文件的方法

    在本篇內容中小編給大家分享的是關于易語言生成exe文件的方法知識點,需要的朋友們參考下。...

    易語言教程網14792022-03-01
  • 易語言易語言在畫板中寫出指定文本當畫板中已滿會自動滾屏

    易語言在畫板中寫出指定文本當畫板中已滿會自動滾屏

    今天小編就為大家分享一篇關于易語言在畫板中寫出指定文本當畫板中已滿會自動滾屏,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,...

    易語言幫助手冊9092022-01-12
  • 易語言一步一步跟我學易語言之關于變量

    一步一步跟我學易語言之關于變量

    今天小編就為大家分享一篇關于一步一步跟我學易語言之關于變量,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨...

    易語言幫助手冊10822021-06-17
主站蜘蛛池模板: 精品一区二区三区视频 | 美女脱了内裤打开腿让你桶爽 | 91久久精品青青草原伊人 | 成人网欧美亚洲影视图片 | 被教官揉了一晚上的奶小说 | 爱操综合 | 国产在线91| 亚洲+欧美+国产+综合 | 国产黄频在线观看 | 久久婷婷五月综合色精品首页 | 忘忧草高清 | 亚洲欧美激情日韩在线 | 日韩精品亚洲专区在线影视 | 我在厨房摸岳的乳HD在线观看 | 97理伦| 午夜一区二区福利视频在线 | 日本欧美一二三区色视频 | 国产欧美精品一区二区三区–老狼 | 毛片免费的| 四虎免费在线视频 | 日本人妖在线 | yjzz视频| 四虎影院新网址 | 精品一二三区久久AAA片 | 色综合天天娱乐综合网 | 大陆男男gayxxxxvideo | 免费永久观看美女视频网站网址 | gogort99人体专业网站 | 99精品国产在现线免费 | 日本午夜vr影院新入口 | 四虎4hu永久免费国产精品 | 青青草国产一区二区三区 | 非洲黑人gay巨大 | 青草青视频 | 日本国产成人精品视频 | 日韩性公交车上xxhd免费 | 久草在线福利视频在线播放 | xxoo做爰猛烈动态 | a看片 | 免费视频精品一区二区三区 | 免费国产一级 |