最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

易語言API高級技巧總結(jié)

 更新時間:2018年11月06日 08:40:34   投稿:laozhang  
在本篇文章里我們給大家分享了關(guān)于易語言API高級技巧的相關(guān)知識點內(nèi)容,以后需要的朋友們可以參考學(xué)習(xí)下。

首先聲明,本文的讀者該賣是:具有相當(dāng)?shù)囊籽哉Z基礎(chǔ)的、能較熟練地把常用的的API從VB/C聲明轉(zhuǎn)換到易言語DLL命令的易言語喜歡者。

1,使用指針

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

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

該函數(shù)把第二個參數(shù)指定的字符串雙制到第一個參數(shù)指定的字符串,第三個參數(shù)指定雙制的長度。假如雙制成功,返回第一個參數(shù)(緩沖區(qū)buffer)的地點。瞧到了嗎?它返回第一個參數(shù)的地點??!那么我們把需求取地點的變量給它的第一個參數(shù),然后想要領(lǐng)讓它雙制成功,它不就返回了那個變量的地點了嗎?

界說一個DLL命令如下:

Dll命令:取文本指針

返回值類型:整數(shù)型

正在Dll庫中的命令名:lstrcpyn

參數(shù):欲取其指針的文本 數(shù)據(jù)類型:文本型 <傳址>

參數(shù):欲取其指針的文本 數(shù)據(jù)類型:文本型 <傳址>

參數(shù):保存 數(shù)據(jù)類型:整數(shù)型 備注:0

這樣挪用:

文本1 = “abcdefg”

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

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

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

Dll命令:取整數(shù)指針

返回值類型:整數(shù)型

正在Dll庫中的命令名:lstrcpyn

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

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

參數(shù):保存 數(shù)據(jù)類型:整數(shù)型 備注:0

2,非凡的結(jié)構(gòu)用字節(jié)集代替

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

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

Dll命令:GradientFill
返回值類型:邏輯型
Dll庫文件名:Msimg32.dll
正在Dll庫中的命令名:GradientFill
參數(shù):hDC 數(shù)據(jù)類型:整數(shù)型
參數(shù):pVertex 數(shù)據(jù)類型:TRIVERTEX
參數(shù):dwNumVertex 數(shù)據(jù)類型:整數(shù)型
參數(shù):pMesh 數(shù)據(jù)類型:GRADIENT_RECT
參數(shù):dwNumMesh 數(shù)據(jù)類型:整數(shù)型
參數(shù):dwMode 數(shù)據(jù)類型:整數(shù)型

其中TRIVERTEX 和GRADIENT_RECT時自界說的數(shù)據(jù)類型:

自界說數(shù)據(jù)類型:TRIVERTEX

成員:x 數(shù)據(jù)類型:整數(shù)型
成員:y 數(shù)據(jù)類型:整數(shù)型
成員:Red 數(shù)據(jù)類型:短整數(shù)型
成員:Green 數(shù)據(jù)類型:短整數(shù)型
成員:Blue 數(shù)據(jù)類型:短整數(shù)型
成員:Alpha 數(shù)據(jù)類型:短整數(shù)型

自界說數(shù)據(jù)類型:GRADIENT_RECT

成員:UpperLeft 數(shù)據(jù)類型:整數(shù)型
成員:LowerRight 數(shù)據(jù)類型:整數(shù)型

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

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

C言語的LONG 和Long正在Windows 32位下是32位,對應(yīng)于易言語“整數(shù)型”,COLOR16為十六位,對應(yīng)于易言語的“短整數(shù)型”沒有標(biāo)題??!那假如我再報告你,易言語中的自界說數(shù)據(jù)類型的成員均是四字節(jié)對齊的,你該理解了吧。是的,易言語中的自界說數(shù)據(jù)類型的成員均是四字節(jié)對齊的,假如不敷四字節(jié),會主動對齊到四字節(jié)的。具體到上面的界說,Red,Green,Blue,Alpha固然被界說為“短整數(shù)型”但是正在易言語內(nèi)部,它們均被擴(kuò)充為“整數(shù)型”了。這就是題手法泉源。解決的要領(lǐng)就是用字節(jié)集代替自界說數(shù)據(jù)結(jié)構(gòu)。易言語的字節(jié)集不存正在四字節(jié)對齊的標(biāo)題。

Dll命令:GradientFill

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

這樣界說就可以了。為了方便地生產(chǎn)所需求的字節(jié)集數(shù)據(jù),我有界說了一個子步驟:

子步驟:TRIVERTEX到字節(jié)集

返回值類型:字節(jié)集

備注:由于內(nèi)存對齊的緣由,務(wù)必把TRIVERTEX類型轉(zhuǎn)換為字節(jié)集才可以挪用API成功

參數(shù):VertEX 數(shù)據(jù)類型:TRIVERTEX <數(shù)組>

局部變量:元素個數(shù) 數(shù)據(jù)類型:整數(shù)型
局部變量:變量 數(shù)據(jù)類型:整數(shù)型
局部變量:數(shù)據(jù) 數(shù)據(jù)類型:字節(jié)集

元素個數(shù) = 取數(shù)組成員數(shù) (VertEX)

計次循環(huán)首 (元素個數(shù), 變量)

數(shù)據(jù) = 數(shù)據(jù) + 到字節(jié)集 (VertEX [變量].x)
數(shù)據(jù) = 數(shù)據(jù) + 到字節(jié)集 (VertEX [變量].y)
數(shù)據(jù) = 數(shù)據(jù) + 到字節(jié)集 (VertEX [變量].Red)
數(shù)據(jù) = 數(shù)據(jù) + 到字節(jié)集 (VertEX [變量].Green)
數(shù)據(jù) = 數(shù)據(jù) + 到字節(jié)集 (VertEX [變量].Blue)
數(shù)據(jù) = 數(shù)據(jù) + 到字節(jié)集 (VertEX [變量].Alpha)
計次循環(huán)尾 ()
返回 (數(shù)據(jù))

具體的請瞧附帶的例程

其他具有類似特 (參數(shù)或結(jié)構(gòu)中有非四字節(jié)的)的API都可以用上述的要領(lǐng)來變通解決。

相關(guān)文章

  • 易語言使用office工具支持庫中的宏命令

    易語言使用office工具支持庫中的宏命令

    今天小編就為大家分享一篇關(guān)于易語言使用office工具支持庫中的宏命令,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • 易語言軟件滿天星效果制作教學(xué)

    易語言軟件滿天星效果制作教學(xué)

    在本篇文章里我們給大家分享了關(guān)于易語言軟件滿天星效果制作教學(xué)內(nèi)容,對此有興趣的朋友們可以跟著學(xué)習(xí)參考下。
    2019-01-01
  • 易語言通過解密微博圖片地址獲取發(fā)布者微博地址的代碼

    易語言通過解密微博圖片地址獲取發(fā)布者微博地址的代碼

    今天小編就為大家分享一篇關(guān)于易語言通過解密微博圖片地址獲取發(fā)布者微博地址的代碼,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-11-11
  • 易語言軟件加VMProtect殼的方法解析

    易語言軟件加VMProtect殼的方法解析

    在本篇文章里我們給大家詳細(xì)分享了易語言軟件加VMProtect殼的方法以及具體步驟,需要的朋友們參考下。
    2018-11-11
  • 易語言模擬客戶組件post發(fā)送數(shù)據(jù)

    易語言模擬客戶組件post發(fā)送數(shù)據(jù)

    在本篇內(nèi)容里小編給大家整理了易語言客戶組件post發(fā)送數(shù)據(jù)帶所有信息的相關(guān)內(nèi)容,有需要的朋友們參考下。
    2018-11-11
  • 分析易語言程序誤報原因

    分析易語言程序誤報原因

    在本篇文章里我們給大家總結(jié)了關(guān)于易語言程序誤報原因,以及相關(guān)猜測分析,有需要的朋友們參考下。
    2018-11-11
  • 易語言讓窗口透明化的操作方法

    易語言讓窗口透明化的操作方法

    本文中小編給大家整理的一篇關(guān)于易語言讓窗口透明化的操作方法和步驟,需要的可以學(xué)習(xí)下。
    2018-12-12
  • 實現(xiàn)易語言界面庫

    實現(xiàn)易語言界面庫

    在本篇內(nèi)容里小編給大家整理了關(guān)于實現(xiàn)易語言界面庫的方法和知識點,需要的朋友們參考下。
    2018-12-12
  • 一步一步跟我學(xué)易語言之第二個易程序菜單設(shè)計

    一步一步跟我學(xué)易語言之第二個易程序菜單設(shè)計

    今天小編就為大家分享一篇關(guān)于的一步一步跟我學(xué)易語言之第二個易程序菜單設(shè)計,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • 易語言將其它類型的數(shù)據(jù)轉(zhuǎn)換為雙精度小數(shù)型

    易語言將其它類型的數(shù)據(jù)轉(zhuǎn)換為雙精度小數(shù)型

    今天小編就為大家分享一篇關(guān)于易語言將其它類型的數(shù)據(jù)轉(zhuǎn)換為雙精度小數(shù)型,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-11-11

最新評論

绥江县| 鄂州市| 綦江县| 宁都县| 库尔勒市| 拜城县| 沭阳县| 宝鸡市| 鸡西市| 平湖市| 都昌县| 连云港市| 无锡市| 正镶白旗| 丰县| 四子王旗| 望都县| 同德县| 兴业县| 安溪县| 平陆县| 比如县| 万宁市| 南通市| 阿克苏市| 镇康县| 临高县| 新巴尔虎右旗| 沁阳市| 盖州市| 中宁县| 山东省| 鄂尔多斯市| 利津县| 彰化县| 昭通市| 阿巴嘎旗| 四会市| 曲松县| 寿光市| 博白县|