zoukankan      html  css  js  c++  java
  • 关于各种编程语言调用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();
    }

  • 相关阅读:
    3D图片变换
    Javascript编码规范,好的代码从书写规范开始,增强代码的可读性,可维护性,这是相当重要的!
    MVC 项目中又一新方法实现依懒注入 (AutoFac)
    Chrome不支持showModalDialog模态对话框和无法返回returnValue的问题
    Unity 的ICallHander在C#项目中实现注入
    Razor Engine,动态脚本语言,mvc上的语法,适用于文件内容生成,静态网页生成等。
    关于IE中图片不显示的问题(IE兼容问题)
    svn E155004: 'XXX' is already locked
    服务器报错:Swap file "./conf/.server.xml.swp" already exists!
    微信小程序 学习笔记(二)了解他的组成
  • 原文地址:https://www.cnblogs.com/plug/p/4562385.html
Copyright © 2011-2022 走看看