EZDD 发表于 2024-6-9 01:51:15

请教关于调用DLL的问题

本帖最后由 EZDD 于 2024-6-9 02:05 编辑

.版本 2

.DLL命令 GetLocalTime, 整数型, "kernel32", "GetLocalTime", , ,
    .参数 系统时间格式, SYSTEMTIME, 传址

.版本 2

.数据类型 SYSTEMTIME, , SYSTEMTIME
    .成员 wYear, 短整数型, , , wYear
    .成员 wMonth, 短整数型, , , wMonth
    .成员 wDayOfWeek, 短整数型, , , wDayOfWeek
    .成员 wDay, 短整数型, , , wDay
    .成员 wHour, 短整数型, , , wHour
    .成员 wMinute, 短整数型, , , wMinute
    .成员 wSecond, 短整数型, , , wSecond
    .成员 wMilliseconds, 短整数型, , , wMilliseconds




新手刚需,请问在火山中如何调用,麻烦给个例子,拜托

Xelloss0618 发表于 2024-6-9 11:42:55

本帖最后由 Xelloss0618 于 2024-6-9 12:04 编辑

<火山程序 类型 = "通常" 版本 = 1 />

类 SYSTEMTIME <公开 基础类 = 本地结构模板 注释 = "新版的别名封装结构体(需要头文件)" @别名 = "SYSTEMTIME" @模板实现类 = "">
{
    变量 年 <公开 类型 = 短整数 注释 = "1601-30827" @输出名 = "wYear">
    变量 月 <公开 类型 = 短整数 注释 = "1-12" @输出名 = "wMonth">
    变量 周 <公开 类型 = 短整数 注释 = "0-6,0为星期天" @输出名 = "wDayOfWeek">
    变量 日 <公开 类型 = 短整数 注释 = "1-31" @输出名 = "wDay">
    变量 时 <公开 类型 = 短整数 注释 = "0-23" @输出名 = "wHour">
    变量 分 <公开 类型 = 短整数 注释 = "0-59" @输出名 = "wMinute">
    变量 秒 <公开 类型 = 短整数 注释 = "0-59" @输出名 = "wSecond">
    变量 毫秒 <公开 类型 = 短整数 注释 = "0-999" @输出名 = "wMilliseconds">

    方法 取本地时间1 <公开 静态 注释 = "DLL表格" @输出名 = "GetLocalTime" @视窗.输入 = "Kernel32.dll">
    参数 lpSystemTime <类型 = SYSTEMTIME>

    方法 取本地时间2 <公开 静态 注释 = "嵌入式">
    参数 SystemTime <类型 = SYSTEMTIME>
    {
      @ ::GetLocalTime(&@<SystemTime>);
    }
}

类 SYSTEMTIME2 <公开 注释 = "结构类封装结构体(不需要头文件,但低效)" @视窗.结构类 = 0>
{
    变量 年 <公开 类型 = 短整数 注释 = "1601-30827">
    变量 月 <公开 类型 = 短整数 注释 = "1-12">
    变量 周 <公开 类型 = 短整数 注释 = "0-6,0为星期天">
    变量 日 <公开 类型 = 短整数 注释 = "1-31">
    变量 时 <公开 类型 = 短整数 注释 = "0-23">
    变量 分 <公开 类型 = 短整数 注释 = "0-59">
    变量 秒 <公开 类型 = 短整数 注释 = "0-59">
    变量 毫秒 <公开 类型 = 短整数 注释 = "0-999">

    方法 取本地时间1 <公开 静态 注释 = "DLL表格" @输出名 = "GetLocalTime" @视窗.输入 = "Kernel32.dll">
    参数 lpSystemTime <类型 = SYSTEMTIME2 @视窗.输出参数 = 真>

    方法 取本地时间2 <公开 静态 注释 = "嵌入式">
    参数 SystemTime <类型 = SYSTEMTIME2>
    {
      @ SYSTEMTIME st;
      @ ::GetLocalTime(&st);
      @ @<SystemTime>.SetStruct((@pdt<SystemTime>::S*)&st);
    }
}

hcwanz 发表于 2024-6-9 11:52:43

:@==':'+'@'

呵呵仙8 发表于 2024-6-9 19:48:41

Xelloss0618 发表于 2024-6-9 11:42
类 SYSTEMTIME
{
    变量 年


谢谢,原来如此!如果@输出名 =没有,结构体还有效吗?结构体套结构体,或更多层套结构体.会不很烧脑?

Xelloss0618 发表于 2024-6-9 20:26:52

呵呵仙8 发表于 2024-6-9 19:48
谢谢,原来如此!如果@输出名 =没有,结构体还有效吗?结构体套结构体,或更多层套结构体.会不很烧脑? ...

使用别名必须有头文件,输出名也必须跟头文件里定义的名称一样。
结构体嵌结构体,有两种写法,第一种就是定义子结构体的别名,第二种就是直接在输出名里填"子结构体变量名称.成员"。
联合体也同样适合用别名封装。

呵呵仙8 发表于 2024-6-9 20:36:30

Xelloss0618 发表于 2024-6-9 20:26
使用别名必须有头文件,输出名也必须跟头文件里定义的名称一样。
结构体嵌结构体,有两种写法,第一种就 ...

嗯,谢谢!应该是明白了,加头文件就是让火山编译为c++代码时,自动加入结构体所在头文件和声明.
页: [1]
查看完整版本: 请教关于调用DLL的问题