I also once thought that it would be really cool to have the GLBasic libraries available for a purely c++ SDK, until I discovered, it is not really needed. Everything is there already in the GLB editor. Sure c++ syntax highlighting and dot-lookups such as in Netbeans/Eclipse would be awesome. but I'm ok with Alt-Tab for references.
It take a little while to get used to the GLB data types for c++, but then you have the same thing in Java. So after a few inline tests, and getting used to the data types, I feel right at home using 100% c++ code in the GLB environment. You have to use 2 inline blocks, with a GLB function in between them, and also declare your functions in the first inline block. But once you've done it a couple of times, you do not even notice the few lines of extra code.
What's also really very handy, is the c++ output for a GLB file in c++ in the directory \Users\<user>\AppData\Local\Temp\glbasic, since is a great reference to see what the c++ commands must look like for compiling. You also pick up such functions as CGStr. If you really think about it, you use advanced data types in c++ anyway for such things as buffered strings, so it's a small step to accept the GLB data types, and you are well on your way.
Here's the default demo for the BoxPrint project redone for c++. One of my first tries. If you compare it to the GLB source, you can see that there is almost no shift in thinking between the two languages.
This is my opinion anyway. I am not saying everyone should go this route, but I am quite happy to play with the cool GLB libraries in c++, using a Basic language IDE.
INLINE
//Declare functions
DGInt BoxPrint2(DGStr str_Str, DGInt x, DGInt y, DGInt wx);
DRAWRECT (300, 100, 200, 300, RGB(20,20,120));
BoxPrint2("This is a long Text, which has to be wrapped twice or thrice to fit the box", 300, 100, 200);
SHOWSCREEN();
MOUSEWAIT();
ENDINLINE
//You need an empty GLBasic function before your c++ functions
FUNCTION foo:
ENDFUNCTION
INLINE
DGInt BoxPrint2(DGStr str_Str, DGInt x, DGInt y, DGInt wx)
{
DGInt tx, ty, cx, cy, cpos;
DGStr word_Str, c_Str;
GETFONTSIZE(tx, ty);
cy = y;
str_Str = str_Str + CGStr(" ");
cx = x;
while(cpos < LEN(str_Str)){
c_Str = MID_Str(str_Str, cpos, 1);
word_Str = word_Str + c_Str;
if(c_Str == CGStr(" ")){
if(cx - x + (LEN(word_Str) - 1) * tx > wx){
cx = x; cy = cy + ty;
}//if
PRINT(word_Str, cx, cy);
cx=cx+LEN(word_Str)*tx;
word_Str="";
}//if
cpos++;
}//while
}
ENDINLINE