kiber_punk писал(а):Да,.но это не годится. TLB писать не умею.
Этому можно достаточно быстро научится. Я по началу тоже сторонился, пока не взял себя в руки
. А взяв себя в руки, спокойно и без страха достаточно быстро все изучил. И оказалась сия наука не такой уж и мудреной. В языке описания библиотек достаточно много всяких премудростей, но для описания констант нужны минимальные знания. Вот код для твоей первой библиотеки типов.
- Код: Выделить всё
//
// Это моя первая библиотека для доступа к константам по имени
//
// Строки компиляции:
// MIDL /win32 MyConstants.idl /tlb MyConstants.tlb
// или
// mktyplib MyConstants.idl
//
[
uuid(F257AAA9-00EB-4C7A-A8F9-E13ACD6499C2), /* Это уникальный идентификатор моей TLB */
version(0.1),
helpstring("Это пояснение будет доступно в Object Browser")
]
library MyConstants
{
[
dllname("<no entry points>"),
]
module Constants
{
const long WM_NULL = 0;
const long WM_CREATE = 1;
const long WM_DESTROY = 2;
const long WM_MOVE = 3;
const long WM_SIZE = 5;
const long WM_ACTIVATE = 6;
const long WA_INACTIVE = 0;
const long WA_ACTIVE = 1;
const long WA_CLICKACTIVE = 2;
const long WM_SETFOCUS = 7;
const long WM_KILLFOCUS = 8;
const long WM_ENABLE = 10;
const long WM_SETREDRAW = 11;
const long WM_SETTEXT = 12;
const long WM_GETTEXT = 13;
const long WM_GETTEXTLENGTH = 14;
const long WM_PAINT = 15;
const long WM_CLOSE = 16;
const long WM_QUERYENDSESSION = 17;
const long WM_QUIT = 18;
const long WM_QUERYOPEN = 19;
const long WM_ERASEBKGND = 20;
const long WM_SYSCOLORCHANGE = 21;
const long WM_ENDSESSION = 22;
const long WM_SHOWWINDOW = 24;
const long WM_WININICHANGE = 26;
const long WM_DEVMODECHANGE = 27;
const long WM_ACTIVATEAPP = 28;
const long WM_FONTCHANGE = 29;
const long WM_TIMECHANGE = 30;
const long WM_CANCELMODE = 31;
const long WM_SETCURSOR = 32;
const long WM_MOUSEACTIVATE = 33;
const long WM_CHILDACTIVATE = 34;
const long WM_QUEUESYNC = 35;
const long WM_GETMINMAXINFO = 36;
const long WM_PAINTICON = 38;
const long WM_ICONERASEBKGND = 39;
const long WM_NEXTDLGCTL = 40;
const long WM_SPOOLERSTATUS = 42;
const long WM_DRAWITEM = 43;
const long WM_MEASUREITEM = 44;
const long WM_DELETEITEM = 45;
const long WM_VKEYTOITEM = 46;
const long WM_CHARTOITEM = 47;
const long WM_SETFONT = 48;
const long WM_GETFONT = 49;
const long WM_SETHOTKEY = 50;
const long WM_GETHOTKEY = 51;
const long WM_QUERYDRAGICON = 55;
const long WM_COMPAREITEM = 57;
const long WM_COMPACTING = 65;
const long WM_OTHERWINDOWCREATED = 66;
const long WM_OTHERWINDOWDESTROYED = 67;
const long WM_COMMNOTIFY = 68;
const long WM_WINDOWPOSCHANGING = 70;
const long WM_WINDOWPOSCHANGED = 71;
const long WM_POWER = 72;
const long WM_COPYDATA = 74;
const long WM_CANCELJOURNAL = 75;
const long WM_NCCREATE = 129;
const long WM_NCDESTROY = 130;
const long WM_NCCALCSIZE = 131;
const long WM_NCHITTEST = 132;
const long WM_NCPAINT = 133;
const long WM_NCACTIVATE = 134;
const long WM_GETDLGCODE = 135;
const long WM_NCMOUSEMOVE = 160;
const long WM_NCLBUTTONDOWN = 161;
const long WM_NCLBUTTONUP = 162;
const long WM_NCLBUTTONDBLCLK = 163;
const long WM_NCRBUTTONDOWN = 164;
const long WM_NCRBUTTONUP = 165;
const long WM_NCRBUTTONDBLCLK = 166;
const long WM_NCMBUTTONDOWN = 167;
const long WM_NCMBUTTONUP = 168;
const long WM_NCMBUTTONDBLCLK = 169;
const long WM_KEYFIRST = 256;
const long WM_KEYDOWN = 256;
const long WM_KEYUP = 257;
const long WM_CHAR = 258;
const long WM_DEADCHAR = 259;
const long WM_SYSKEYDOWN = 260;
const long WM_SYSKEYUP = 261;
const long WM_SYSCHAR = 262;
const long WM_SYSDEADCHAR = 263;
const long WM_KEYLAST = 264;
const long WM_INITDIALOG = 272;
const long WM_COMMAND = 273;
const long WM_SYSCOMMAND = 274;
const long WM_TIMER = 275;
const long WM_HSCROLL = 276;
const long WM_VSCROLL = 277;
const long WM_INITMENU = 278;
const long WM_INITMENUPOPUP = 279;
const long WM_MENUSELECT = 287;
const long WM_MENUCHAR = 288;
const long WM_ENTERIDLE = 289;
const long WM_CTLCOLORMSGBOX = 306;
const long WM_CTLCOLOREDIT = 307;
const long WM_CTLCOLORLISTBOX = 308;
const long WM_CTLCOLORBTN = 309;
const long WM_CTLCOLORDLG = 310;
const long WM_CTLCOLORSCROLLBAR = 311;
const long WM_CTLCOLORSTATIC = 312;
const long WM_MOUSEFIRST = 512;
const long WM_MOUSEMOVE = 512;
const long WM_LBUTTONDOWN = 513;
const long WM_LBUTTONUP = 514;
const long WM_LBUTTONDBLCLK = 515;
const long WM_RBUTTONDOWN = 516;
const long WM_RBUTTONUP = 517;
const long WM_RBUTTONDBLCLK = 518;
const long WM_MBUTTONDOWN = 519;
const long WM_MBUTTONUP = 520;
const long WM_MBUTTONDBLCLK = 521;
const long WM_MOUSELAST = 521;
const long WM_PARENTNOTIFY = 528;
const long WM_ENTERMENULOOP = 529;
const long WM_EXITMENULOOP = 530;
const long WM_MDICREATE = 544;
const long WM_MDIDESTROY = 545;
const long WM_MDIACTIVATE = 546;
const long WM_MDIRESTORE = 547;
const long WM_MDINEXT = 548;
const long WM_MDIMAXIMIZE = 549;
const long WM_MDITILE = 550;
const long WM_MDICASCADE = 551;
const long WM_MDIICONARRANGE = 552;
const long WM_MDIGETACTIVE = 553;
const long WM_MDISETMENU = 560;
const long WM_DROPFILES = 563;
const long WM_MDIREFRESHMENU = 564;
const long WM_CUT = 768;
const long WM_COPY = 769;
const long WM_PASTE = 770;
const long WM_CLEAR = 771;
const long WM_UNDO = 772;
const long WM_RENDERFORMAT = 773;
const long WM_RENDERALLFORMATS = 774;
const long WM_DESTROYCLIPBOARD = 775;
const long WM_DRAWCLIPBOARD = 776;
const long WM_PAINTCLIPBOARD = 777;
const long WM_VSCROLLCLIPBOARD = 778;
const long WM_SIZECLIPBOARD = 779;
const long WM_ASKCBFORMATNAME = 780;
const long WM_CHANGECBCHAIN = 781;
const long WM_HSCROLLCLIPBOARD = 782;
const long WM_QUERYNEWPALETTE = 783;
const long WM_PALETTEISCHANGING = 784;
const long WM_PALETTECHANGED = 785;
const long WM_HOTKEY = 786;
const long WM_PENWINFIRST = 896;
const long WM_PENWINLAST = 911;
const long WM_USER = 1024;
}
}
Возьми Notepad++ и создай в нем файл MyConstants.idl, скопируй приведенный код и сохрани.
Далее установи плагин NppExec, если он еще не установлен. После установки на панели инструментов будет доступна кнопка 'Show Console Dialog', которой можно включать/выключать отображение консоли. Вставляй туда строку для компиляции (одну их двух приведенных). Нажимаешь Enter и Вуаля! Твоя первая TLB готова. Подключай к VB6 и смотри на результат. Чтобы было удобно работать с IDL, можно сделать подсветку синтаксис. Вот его описание. Достаточно его импортировать в Notepad++