Страница: 1 | 2 | 3 | 4 |
Пожалуйста переведите мне на VB.... сильно надо..... Есть два фалика: Gen.h ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' typedef struct { #define GPPHDR_VER 0x10extern winampGeneralPurposePlugin *gen_plugins[256]; ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' TrayCTL.c и #include <windows.h> #define ENABLE_PREV 1 char *tips[5] = { // from systray.c BOOL CALLBACK ConfigProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam); winampGeneralPurposePlugin plugin = void do_icons() void quit() void *lpWndProcOld; int init() do_icons(); return 0; BOOL CALLBACK ConfigProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
Импоси[sensored]... Там же чистый WinAPI, а как можно на VB управлять окном на уровне хэндла, да ещё и с менеджером сообщений работать... Увы, мой друг, увы... Ну раз тут Api значит из VB это возможно, вот тока как со структурой быть..... Первый раз вижу подобный вопрос на этом форуме! Ну хорошо что хоть перевести просят не из Assembler'a Вот перевод типов ATOM ByVal variable As Integer BOOL ByVal variable As Long BYTE ByVal variable As Byte CHAR ByVal variable As Byte COLORREF ByVal variable As Long DWORD ByVal variable As Long HWND, HDC, HMENU, etc. (Windows handles) ByVal variable As Long INT, UINT ByVal variable As Long LONG ByVal variable As Long LPARAM ByVal variable As Long LPDWORD variable As Long LPINT, LPUINT variable As Long LPRECT variable As type LPSTR, LPCSTR ByVal variable As String LPVOID variable As Any (use ByVal when passing a string) LPWORD variable As Integer LRESULT ByVal variable As Long NULL As Any or ByVal variable As Long ByVal Nothing or ByVal 0& or vbNullString SHORT ByVal variable As Integer VOID Sub procedure WORD ByVal variable As Integer WPARAM ByVal variable As Long По поводу звёздочки. Вроде это указаталь на адрес переменной. Думаю что в случае VOID это указатель на адрес процедуры. Скорее всего решается с помощью addressof. Насчет типов понятно, спасибо, по поводу указателей я знал, а вот какой аналог структуры Си в VB? Есть волшебное слово type... Не ну это ясно понятно что это Type ты мне скажи как записать вот эти строки int (*init)();
Вопрос: Люди кто в VC++ шарит....
Добавлено: 07.08.03 16:50
Автор вопроса: AlexR | ICQ: 191277526
int version;
char *description;
int (*init)();
void (*config)();
void (*quit)();
HWND hwndParent;
HINSTANCE hDllInstance;
} winampGeneralPurposePlugin;
typedef winampGeneralPurposePlugin * (*winampGeneralPurposePluginGetter)();
#include <process.h>
#include "gen.h"
#include "resource.h"
BOOL WINAPI _DllMainCRTStartup(HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved)
{
return TRUE;
}
#define ENABLE_PLAY 2
#define ENABLE_STOP 4
#define ENABLE_NEXT 8
#define ENABLE_EJECT 16
int config_enabled=0;
HICON Icons[5];
"Previous Track - Winamp",
"Play/Pause - Winamp",
"Stop - Winamp",
"Next Track - Winamp",
"Open File - Winamp"
};
extern BOOL systray_add(HWND hwnd, UINT uID, HICON hIcon, LPSTR lpszTip);
extern BOOL systray_del(HWND hwnd, UINT uID);
void config();
void quit();
int init();
void config_write();
void config_read();
char szAppName[] = "Nullsoft Tray Control";
{
GPPHDR_VER,"",init,config,quit,
};
{
static int l=0;
int i;
if (l == config_enabled) return;
for (i = 4; i >= 0; i --)
{
if (l & (1<<i))
systray_del(plugin.hwndParent,i);
}
l=config_enabled;
for (i = 0; i < 5; i ++)
{
if (config_enabled & (1<<i))
systray_add(plugin.hwndParent,i,Icons[i],tips[i]);
}
}
void config()
{
DialogBox(plugin.hDllInstance,MAKEINTRESOURCE(IDD_DIALOG1),plugin.hwndParent,ConfigProc);
}
{
config_write();
config_enabled=0;
do_icons();
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
if (message == WM_USER+27)
{
int which = LOWORD(wParam) - 1024,a;
switch (LOWORD(lParam))
{
case WM_LBUTTONDOWN:
switch (which)
{
case 0:
if ((a=SendMessage(hwnd,WM_USER,0,104)) == 0) // not playing, let's
// hit prev
{
SendMessage(hwnd,WM_COMMAND,40044,0);
}
else if (a != 3 && SendMessage(hwnd,WM_USER,0,105) > 2000) // restart
{
SendMessage(hwnd,WM_COMMAND,40045,0);
} else { // prev
SendMessage(hwnd,WM_COMMAND,40044,0);
}
return 0;
case 1:
if ((a=SendMessage(hwnd,WM_USER,0,104)) != 1) // not playing, let's
// hit play
{
SendMessage(hwnd,WM_COMMAND,40045,0);
}
else { // prev
SendMessage(hwnd,WM_COMMAND,40046,0);
}
return 0;
case 2:
if (GetKeyState(VK_SHIFT) & (1<<15))
SendMessage(hwnd,WM_COMMAND,40147,0);
else
SendMessage(hwnd,WM_COMMAND,40047,0);
return 0;
case 3:
SendMessage(hwnd,WM_COMMAND,40048,0);
return 0;
case 4:
SetForegroundWindow(hwnd);
if (GetKeyState(VK_CONTROL) & (1<<15))
SendMessage(hwnd,WM_COMMAND,40185,0);
else if (GetKeyState(VK_SHIFT) & (1<<15))
SendMessage(hwnd,WM_COMMAND,40187,0);
else
SendMessage(hwnd,WM_COMMAND,40029,0);
return 0;
}
return 0;
}
}
return CallWindowProc(lpWndProcOld,hwnd,message,wParam,lParam);
}
{
{
static char c[512];
char filename[512],*p;
GetModuleFileName(plugin.hDllInstance,filename,sizeof(filename));
p = filename+lstrlen(filename);
while (p >= filename && *p != '\\') p--;
wsprintf((plugin.description=c),"%s Plug-In v0.1 (%s)",szAppName,p+1);
}
config_read();
{
int i;
for (i = 0; i < 5; i ++)
Icons[i] = LoadIcon(plugin.hDllInstance,MAKEINTRESOURCE(IDI_ICON1+i));
}
lpWndProcOld = (void *) GetWindowLong(plugin.hwndParent,GWL_WNDPROC);
SetWindowLong(plugin.hwndParent,GWL_WNDPROC,WndProc);
}
{
switch (uMsg)
{
case WM_INITDIALOG:
{
int i;
for (i = 0; i < 5; i++)
CheckDlgButton(hwndDlg,IDC_PREV+i,(config_enabled&(1<<i))?BST_CHECKED:BST_UNCHECKED);
}
return FALSE;
&
Ответы
Всего ответов: 46
Номер ответа: 1
Автор ответа:
Seg@
ICQ: 162261148
Вопросов: 1
Ответов: 3
Web-сайт:
Профиль | | #1
Добавлено: 07.08.03 17:24
Номер ответа: 2
Автор ответа:
AlexR
ICQ: 191277526
Вопросов: 2
Ответов: 5
Профиль | | #2
Добавлено: 07.08.03 17:33
Номер ответа: 3
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #3
Добавлено: 07.08.03 23:54
Номер ответа: 4
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #4
Добавлено: 08.08.03 06:40
Номер ответа: 5
Автор ответа:
AlexR
ICQ: 191277526
Вопросов: 2
Ответов: 5
Профиль | | #5
Добавлено: 08.08.03 08:32
Номер ответа: 6
Автор ответа:
Seg@
ICQ: 162261148
Вопросов: 1
Ответов: 3
Web-сайт:
Профиль | | #6
Добавлено: 08.08.03 12:01
Номер ответа: 7
Автор ответа:
AlexR
ICQ: 191277526
Вопросов: 2
Ответов: 5
Профиль | | #7
Добавлено: 08.08.03 12:16
void (*config)();
void (*quit)();
это указатели на функции, так как в типе описать это?
Номер ответа: 8
Автор ответа:
Оракул
Вопросов: 0
Ответов: 1
Профиль | | #8
Добавлено: 04.08.06 17:34
Подскажите пожалуйста как на VC++ 6.0 в MFC нажав на кнопку импортировать текст(фрагмент html
кода) в HTML страницу.
Очень нужно нигде нет обучалки по этому вопросу. Пожалуйста помогите чайнику. Желательно
попоробнее в я начинающий.
Номер ответа: 9
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #9
Добавлено: 04.08.06 18:09
кода) в HTML страницу.
подробнее...
Номер ответа: 10
Автор ответа:
shuffle
Администратор
ICQ: 201502381
Вопросов: 15
Ответов: 737
Профиль | | #10
Добавлено: 04.08.06 19:06
Следующим образом.
В модуле:
Public Type winampGeneralPurposePlugin
version As Long
description As String
initaddr As Long
configaddr As Long
quitaddr As Long
hwndParent As Long
hDllInstance As Long
End Type
Public Function GetAddress(ByVal func As Long) As Long
GetAddress = func
End Function
Public Sub config()
'...
End Sub
Public Sub quit()
'...
End Sub
Public Function init() As Long
'...
End Function
В форме:
'winampGeneralPurposePlugin plugin =
'{
' GPPHDR_VER,"",init,config,quit,
'};
'#define GPPHDR_VER 0x10
Private Const GPPHDR_VER = &H10
Private plugin As winampGeneralPurposePlugin
Private Sub Form_Load()
plugin.version = GPPHDR_VER
plugin.initaddr = GetAddress(AddressOf init)
plugin.configaddr = GetAddress(AddressOf config)
plugin.quitaddr = GetAddress(AddressOf quit)
End Sub
Номер ответа: 11
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #11
Добавлено: 06.08.06 19:25
За полный перевод 20 wmz, кто меньше?
Номер ответа: 12
Автор ответа:
shuffle
Администратор
ICQ: 201502381
Вопросов: 15
Ответов: 737
Профиль | | #12
Добавлено: 07.08.06 01:09
15 wmz
Номер ответа: 13
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #13
Добавлено: 07.08.06 11:53
14
Номер ответа: 14
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #14
Добавлено: 07.08.06 16:33
ыыыыыы дык гатовое есть )))
13 !!!!!!!!!
Номер ответа: 15
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #15
Добавлено: 08.08.06 11:23
12.5