Компиляция в старых и новых билдах(МТ4), в чем разница?

 

помогите понять в чем дело, при компиляции в старых билдах, кнопка есть, в новых - ее нет, хотя при компиляции и при запуске сообщений об ошибках нет, вот строчки кода:

 

#import "mt4gui.dll"
   int tbPutObject(int a0, string a1, int a2, int a3, int a4, int a5, string a6);
   int tbRemove(int a0, int a1);
   int tbSetBgColor(int a0, int a1, int a2);
   int tbSetTextColor(int a0, int a1, int a2);
   int tbSetText(int a0, int a1, string a2, int a3, string a4);

#import

int aa = 0;
int bb;

int init() {
   aa = WindowHandle(Symbol(), Period());
   bb = tbPutObject(aa, "button", 150.0 , -140.0 , 125.0 , 30.0 ,"wwwwwww");
   tbSetText(aa, bb, "Buy " , 18.0 , "Arial");
   tbSetBgColor(aa, bb, Red);
    return(0);
}


int deinit() {
   tbRemove(aa, bb);
   return (0);
}

int start() {
  
   return(0);
}
 
Belju100:

помогите понять в чем дело, при компиляции в старых билдах, кнопка есть, в новых - ее нет, хотя при компиляции и при запуске сообщений об ошибках нет, вот строчки кода:

 

Нужно переделывать DLL, т. к. в старом формате MQL4 строки были ANSI, а в новом - Unicode. Поэтому все строковые параметры, передаваемые в DLL, в первом варианте будут обработаны верно, а во втором - неверно.
 

  Пробовал так, вместо 

#import "user32.dll"

   int GetParent(int a0);
   int PostMessageA(int a0, int a1, int a2, int a3);
   int RegisterWindowMessageA(string a0);

   делал так

#import "user32.dll"

   int GetParent(int a0);
   int PostMessageW(int a0, int a1, int a2, int a3);
   int RegisterWindowMessageW(string a0);

 был нашел на англоязычном сайте инфу что начиная с 600 билда PostMessageA и RegisterWindowMessageне работают, следует заменить на такие же с W, но тоже безрезультатно, причем с W не работает и до 600

Причина обращения: