回调的C ++传递函数

时间:2019-08-30 07:59:25

标签: c++ callback

我有一个C第三方库。标题中有以下功能

bool bSetSelectMenuItemCallback(int( *pFunction )( int*  piSelectedIndex, int iItemCount, int iTimeoutSec, const char* pcItemList, const char* pcFormHeader ) );

如何将C ++函数传递给此回调?

此库有ActiveX(ocx)包装器,并且其中包含以下事件

Event SelectMenuItem(string sFormHeader, long lTimeout, long lItemCount, 
string sItemList, long plStatus, long plSelectedIndex)

我们可以看到还有另外一个参数plStatus,据我所知,这是int(* pFunction)返回的结果。 您可以使用类似

的方法轻松订阅此活动
void Init() {
    OcxLib ocx = new OcxLib()
    ocx.SelectMenuItem += OnMenu();
}
void OnMenu(string sFormHeader, long lTimeout, long lItemCount,
    string sItemList, long plStatus, long plSelectedIndex) {
    Console.WriteLine("Inside event");
}

我想做同样的事情,但是直接在C ++中(不使用ocx库)。

1 个答案:

答案 0 :(得分:0)

解决

<!DOCTYPE html>
<html lang="en">
  <head>
    <script type="text/javascript">
      var i = 0;
      var totalSections = 1; //TODO Set Total number of pages in your form
      check = () => {
        if (++i > totalSections) {
          alert('Thank You for filling up the form');
          setTimeout(google.script.host.close, 7);
        }
      };
    </script>
  </head>
  <body>
    <h1>
      MASTER FORM
    </h1>
    <iframe
      onload="check()"
      referrerpolicy="no-referrer"
      sandbox="allow-scripts allow-forms"
      src="<?=pubUrl?>?embedded=true"
      width="700"
      height="520"
      frameborder="0"
      marginheight="0"
      marginwidth="0"
    ></iframe>
  </body>
</html>