Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 | 3 | 4 |

 

  Вопрос: Люди кто в VC++ шарит.... Добавлено: 07.08.03 16:50  

Автор вопроса:  AlexR | ICQ: 191277526 

Пожалуйста переведите мне на VB.... сильно надо.....

Есть два фалика: Gen.h

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

typedef struct {
 int version;
 char *description;
 int (*init)();
 void (*config)();
 void (*quit)();
 HWND hwndParent;
 HINSTANCE hDllInstance;
} winampGeneralPurposePlugin;

#define GPPHDR_VER 0x10extern winampGeneralPurposePlugin *gen_plugins[256];
typedef winampGeneralPurposePlugin * (*winampGeneralPurposePluginGetter)();

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

TrayCTL.c

и

 

 

#include <windows.h>
#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_PREV 1
#define ENABLE_PLAY 2
#define ENABLE_STOP 4
#define ENABLE_NEXT 8
#define ENABLE_EJECT 16
int config_enabled=0;
HICON Icons[5];

char *tips[5] = {
 "Previous Track - Winamp",
 "Play/Pause - Winamp",
 "Stop - Winamp",
 "Next Track - Winamp",
 "Open File - Winamp"
};

// from systray.c
extern BOOL systray_add(HWND hwnd, UINT uID, HICON hIcon, LPSTR lpszTip);
extern BOOL systray_del(HWND hwnd, UINT uID);

BOOL CALLBACK ConfigProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam);
void config();
void quit();
int init();
void config_write();
void config_read();
char szAppName[] = "Nullsoft Tray Control";

winampGeneralPurposePlugin plugin =
{
 GPPHDR_VER,"",init,config,quit,
};

void do_icons()
{
 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);
}

void quit()
{
 config_write();
 config_enabled=0;
 do_icons();
}

void *lpWndProcOld;
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);
}

int init()
{
 {
  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);

 do_icons();

 return 0;
}

 

BOOL CALLBACK ConfigProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
 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-сайт: www.litestep.bip.ru
 Профиль | | #1
Добавлено: 07.08.03 17:24

Импоси[sensored]...

Там же чистый WinAPI, а как можно на VB управлять окном на уровне хэндла, да ещё и с менеджером сообщений работать...

Увы, мой друг, увы...

Ответить

Номер ответа: 2
Автор ответа:
 AlexR



ICQ: 191277526 

Вопросов: 2
Ответов: 5
 Профиль | | #2 Добавлено: 07.08.03 17:33

Ну раз тут Api значит из VB это возможно, вот тока как со структурой быть.....

Ответить

Номер ответа: 3
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #3 Добавлено: 07.08.03 23:54

 Первый раз вижу подобный вопрос на этом форуме!

Ну хорошо что хоть перевести просят не из Assembler'a

Ответить

Номер ответа: 4
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #4
Добавлено: 08.08.03 06:40

Вот перевод типов

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.

Ответить

Номер ответа: 5
Автор ответа:
 AlexR



ICQ: 191277526 

Вопросов: 2
Ответов: 5
 Профиль | | #5 Добавлено: 08.08.03 08:32

Насчет типов понятно, спасибо, по поводу указателей я знал, а вот какой аналог структуры Си в VB?

Ответить

Номер ответа: 6
Автор ответа:
 Seg@



ICQ: 162261148 

Вопросов: 1
Ответов: 3
 Web-сайт: www.litestep.bip.ru
 Профиль | | #6
Добавлено: 08.08.03 12:01

Есть волшебное слово type...

Ответить

Номер ответа: 7
Автор ответа:
 AlexR



ICQ: 191277526 

Вопросов: 2
Ответов: 5
 Профиль | | #7 Добавлено: 08.08.03 12:16

Не ну это ясно понятно что это Type ты мне скажи как записать вот эти строки

int (*init)();
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

кода) в HTML страницу.


подробнее...

Ответить

Номер ответа: 10
Автор ответа:
 shuffle



Администратор

ICQ: 201502381 

Вопросов: 15
Ответов: 737
 Профиль | | #10 Добавлено: 04.08.06 19:06
это указатели на функции, так как в типе описать это?

Следующим образом.
В модуле:
Option Explicit
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


В форме:
Option Explicit
'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-сайт: sharpc.livejournal.com
 Профиль | | #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-сайт: sharpc.livejournal.com
 Профиль | | #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-сайт: sharpc.livejournal.com
 Профиль | | #15
Добавлено: 08.08.06 11:23
12.5

Ответить

Страница: 1 | 2 | 3 | 4 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам