|
MT4のカスタムインジケーターからDLL(WIN32APIで作成)への【文字列渡し】が上手く行かず悩んでおります。
カスタムインジケーター側のプログラムは↓↓↓
〜〜〜〜初期設定省略〜〜〜〜
#import "MenoNoteOut.dll"
int MenoNoteOut(string);
#import
int init()
{
return(0);
}
int start()
{
int TEMP = MenoNoteOut(DoubleToStr(Bid ,5));
return(0);
}
※ もちろんこれをコンパイルしてMT4に搭載しても何も起こりません。
DLL側(WIN32API)↓↓↓
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
__declspec(dllexport) int __stdcall MenoNoteOut(LPCSTR str){
MessageBox(NULL , str , "" , MB_OK);
return 0;
}
コンパイルエラーなども無くDLL化し、他のアプリをメインにプロセス間文字列渡しを行うと
特に問題なく文字列が表示されます。(VB2008で検証)
ところが、MT4で↑のインジケーターを搭載しTickが進むと
メッセージが表示されますが肝心の【文字列】が先頭の一文字しか表示されません(渡されていません)
例えば「EUR/USD」をチャートに表示し、DLLをライブラリーに入れインジケーターを載せると
EUR/USDの最近値 ⇒ 1.*****ですが表示では「1」としか表示されません。
(たぶんこの”1”は初値(最左側)だと思いますが・・・?)
ちなみにインジケーター内の文字出力部「DoubleToStr(Bid ,5)」を”9999”などにすると
”9”が表示されましたので、やはり初値(最左側)のことだと思いますが・・・?
「レート値を表示したいなら文字列ではなく整数・実数では?」っと
思われるかも分かりませんが、整数・実数(int・double)の受け渡しは上手く行きますが
いずれ「ファイル名」等も渡したいので文字列でないと困ります。
どうかインジケーターやAPIにお詳しい方!
宜しくご教授をお願い致します。
|
|