• 关于各种编程语言调用C星寻路插件的例子


    DLL的调用

    1、VB

    Public Declare Function FindPath Lib "zd/LY_Cstar_VB.dll" (ByVal StarX As Integer, ByVal StarY As Integer, ByVal StopX As Integer, ByVal StopY As Integer, ByVal Space As Integer, ByVal MapSRC As String, ByVal ClickXY As Integer, ByVal sn As String) As String

    Private Sub Command1_Click()
    Dim ss As String
    ss = FindPath(154, 39, 35, 210, 0, "zd/1.bmp", 2, "dl_8889888")
    If ss <> "-1" Then
    MsgBox (ss)
    End If
    End Sub

    注意VB不能像DELPHI一样传递变量 赋值变量返回 所以特别做了有返回值的函数FindPath,另外传递字符串 请用PCHAR类型

    2、易语言

    .版本 2

    .DLL命令 FindPath, 逻辑型, "LY_Cstar.dll", "FindPath"
    .参数 StarX, 整数型
    .参数 StarY, 整数型
    .参数 StopX, 整数型
    .参数 StopY, 整数型
    .参数 Space, 整数型
    .参数 MapSRC, 文本型
    .参数 ClickXY, 整数型
    .参数 sn, 文本型
    .参数 outstring, 整数型, 传址

    .局部变量 DD, 整数型
    .局部变量 SS, 逻辑型

    SS = FindPath (418, 117, 170, 261, 0, “2.bmp”, 2, “dl_8889888”, DD)
    .如果 (SS)
    信息框 (“计算值:” + 指针到文本 (DD), 0, )
    .否则
    信息框 (“设置参数不能到达此处:”, 0, )

    COM DLL方式

    3、TC

    //开始按钮_点击操作
    功能 开始_点击()
    TS = com("DL.CStar") // 创建插件对象 com关键字必须是小写
    ss= TS.FindPath(111,41,23,85,0,"C:\Users\momo\Desktop\C星寻路验证程序\pic\1004.bmp",2,"保密安全码")
    辅助.消息框(ss)
    功能结束

    4、按键精灵

    ss=Plugin.DL_Cstar.FindPath(154,39,35,210,0,"Map1.bmp",2,"dl_8889888")
    MessageBox ss

    5、Delphi

    unit Unit2;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls;

    type
    TForm2 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form2: TForm2;

    implementation

    {$R *.dfm}
    //------------------------------------------------------------------------------自动释放资源
    function FindPath(StarX, StarY, StopX, StopY, Space: Integer; MapSRC: PAnsiChar;ClickXY: Integer; sn: PAnsiChar;var outstring: PAnsiChar): Boolean;stdcall;External 'zd/LY_Cstar.dll' ;//NAME 'FindPath2'
    //------------------------------------------------------------------------------//
    procedure TForm2.Button1Click(Sender: TObject);
    var
    ss:PAnsiChar;
    begin
    if FindPath(154,39,35,210,0,'zd/1.bmp',2,'dl_8889888',ss) then
    ShowMessage(ss);
    end;

    end.

    7、VC

    // fffDlg.cpp : implementation file
    //

    #include "stdafx.h"
    #include "fff.h"
    #include "fffDlg.h"

    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif

    /////////////////////////////////////////////////////////////////////////////
    // CFffDlg dialog

    CFffDlg::CFffDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CFffDlg::IDD, pParent)
    {
    //{{AFX_DATA_INIT(CFffDlg)
    // NOTE: the ClassWizard will add member initialization here
    //}}AFX_DATA_INIT
    // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    }

    void CFffDlg::DoDataExchange(CDataExchange* pDX)
    {
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CFffDlg)
    // NOTE: the ClassWizard will add DDX and DDV calls here
    //}}AFX_DATA_MAP
    }

    BEGIN_MESSAGE_MAP(CFffDlg, CDialog)
    //{{AFX_MSG_MAP(CFffDlg)
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()

    /////////////////////////////////////////////////////////////////////////////
    // CFffDlg message handlers

    BOOL CFffDlg::OnInitDialog()
    {
    CDialog::OnInitDialog();

    // Set the icon for this dialog. The framework does this automatically
    // when the application's main window is not a dialog
    SetIcon(m_hIcon, TRUE); // Set big icon
    SetIcon(m_hIcon, FALSE); // Set small icon

    // TODO: Add extra initialization here

    return TRUE; // return TRUE unless you set the focus to a control
    }

    // If you add a minimize button to your dialog, you will need the code below
    // to draw the icon. For MFC applications using the document/view model,
    // this is automatically done for you by the framework.

    void CFffDlg::OnPaint()
    {
    if (IsIconic())
    {
    CPaintDC dc(this); // device context for painting

    SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

    // Center icon in client rectangle
    int cxIcon = GetSystemMetrics(SM_CXICON);
    int cyIcon = GetSystemMetrics(SM_CYICON);
    CRect rect;
    GetClientRect(&rect);
    int x = (rect.Width() - cxIcon + 1) / 2;
    int y = (rect.Height() - cyIcon + 1) / 2;

    // Draw the icon
    dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
    CDialog::OnPaint();
    }
    }

    // The system calls this to obtain the cursor to display while the user drags
    // the minimized window.
    HCURSOR CFffDlg::OnQueryDragIcon()
    {
    return (HCURSOR) m_hIcon;
    }

    void CFffDlg::OnOK()
    {
    // TODO: Add extra validation here
    String d;
    String d1,d2;
    d1="C:\LY_Cstar.dll";
    d2="C:\1.bmp";

    HINSTANCE Hint = ::LoadLibrary(d1);//加载我们刚才生成的dll
    if(Hint)
    {
    typedef void(WINAPI*ADD)(CString);//函数指针类型
    ADD b = NULL;
    b = (ADD)GetProcAddress(Hint,"A");//取得dll导出的add方法
    typedef CString (WINAPI*ADD1)(int,int,int,int,LPCTSTR);//函数指针类型
    ADD1 B=NULL;
    B = (ADD1)GetProcAddress(Hint,"GetPath");//取得dll导出的add方法
    b(d2);
    //d=B(2,2,20,20,"19921005");
    }
    CDialog::OnOK();
    }

  • 相关阅读:
    [PHP] 适配器模式的日常使用
    [MySQL] timestamp和datetime的区别和大坑
    [PHP] foreach循环的引用赋值可能导致的问题
    [PHP] 邮件发送mail()函数失败问题 sendmail命令与postfix
    [日常] 腾讯云发送邮件失败问题
    [日常] 正则表达式 小括号() 中括号[] 大括号{}
    [Linux] awk与posix字符集
    [PHP] 工厂模式的日常使用
    [PHP] 抽象类abstract的回顾
    [日常]灵活的频率限制实现
  • 原文地址:https://www.cnblogs.com/plug/p/4562385.html
Copyright © 2020-2023  润新知