AutoPlay Media Studio ile Popup Menü Yapımı

guclusat

Tanınmış Üye
Süper Moderatör
8SG06.png

Biliyorsunuz ki her objenin contextmenu veya right click eventi yok. Dolayısıyla bu objelere popup menü (sağ tık menü) yapamıyorduk. Memory plugini bu noktada bize yardımcı oluyor. Kodlarımızı inceleyelim.

Öncelikle Global Functions kısmına kodlarımızı yazıyoruz ;
Kod:
WM_LBUTTONDOWN = 513
WM_LBUTTONUP = 514
WM_RBUTTONDOWN = 516

function SelectItem(hWnd,  wParam, lParam)
LeftButtonDown(hWnd,  wParam, lParam)
LeftButtonUp(hWnd,  wParam, lParam)
end

function LeftButtonUp(hWnd,  wParam, lParam)
va_args = string.format("%d,%d,%d,%d",hWnd, WM_LBUTTONUP, wParam, lParam)
DLL.CallFunction("User32.dll", "SendMessageA", va_args, DLL_RETURN_TYPE_INTEGER, DLL_CALL_STDCALL);
end
function LeftButtonDown(hWnd,  wParam, lParam)
va_args = string.format("%d,%d,%d,%d",hWnd, WM_LBUTTONDOWN, wParam, lParam)
DLL.CallFunction("User32.dll", "SendMessageA", va_args, DLL_RETURN_TYPE_INTEGER, DLL_CALL_STDCALL);
end

function LOWORD(value)
  return Memory.BitAND(value, 65535)
end

function HIWORD(value)
  return Memory.BitAND(Memory.ShiftRight(value, 16), 65535)
end

---------- Menü kodlarımız ------------
function ShowPopUpMenu()
  tblMenu = {};
  tblMenu[1] ={};
  tblMenu[1].Text = "ExtremitySoft";
  tblMenu[1].ID = 100;
  tblMenu[1].IconID = 0;
  tblMenu[1].Checked = false;
  tblMenu[1].Enabled = true;
  tblMenu[2] ={};
  tblMenu[2].Text = "Divane ©";
  tblMenu[2].ID = 200;
  tblMenu[2].IconID = 0;
  tblMenu[2].Checked = false;
  tblMenu[2].Enabled = true;
 
  Mouse = System.GetMousePosition(true, nil);
  nRes = Application.ShowPopupMenu(Mouse.X, Mouse.Y, tblMenu, TPM_LEFTALIGN, TPM_TOPALIGN, true, true);
end
Globale kodlarımızı yazdık, aynı zamanda menümüzü de oluşturduk. Şimdi sıra obje ile ilişkilendirmede. Kodları inceleyelim ;

On show eventine kodlarımızı yazıyoruz.

Kod:
function CallBack(hWnd, uMsg, wParam, lParam)

        if uMsg == WM_RBUTTONDOWN then

        SelectItem(hWnd,wParam, lParam)
        ShowPopUpMenu()
      
        end
      
end

LBHandle = ListBox.GetProperties("ListBox1").WindowHandle;
Memory.CreateWindowSubClass(LBHandle, 0, "CallBack");
İşlem tamamdır. Listbox objemize sağ tık menüsü oluşturmuş olduk. Bu kodlarla tüm objelere menü ekleyebilirsiniz.

Kod:
LBHandle = ListBox.GetProperties("ListBox1").WindowHandle;
Sayfamızın on show evresine yazdığımız yukarıdaki kod Listbox'un handle değerini alıyordu. Bu satırda istediğiniz objenin handle değerini alarak popup menü göstermiş olacaksınız. Kolay gelsin.
 
Son düzenleme:
Geri
Yukarı