1. Bu site çerez kullanmaktadır. Siteyi kullanmaya devam etmeniz halinde çerez kullanımı ile ilgili site koşullarını kabul etmiş sayılırsınız. Daha Fazlasını Öğren.
  2. Forum İllegal Uyarısı Forum kuralları gereği forumda video ve illagal paylaşım yapmak yasaktır.Program Arşivimizde ise kısıtlanmış sürüm yada dağıtımı serbest olan (trial - freeware) yazılımlar yayınlayınız..Aksi takdirde mesajlarınız silinecektir..

AutoPlay Media Studio ile Popup Menü Yapımı

Konusu 'AutoPlay Media Studio Öğreniyorum' forumundadır ve guclusat tarafından 25 Ağustos 2012 başlatılmıştır.

  1. guclusat
    Offline

    guclusat Tanınmış Üye Süper Moderatör

    Katılım:
    14 Haziran 2009
    Mesajlar:
    9.756
    Ödül Puanları:
    48
    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 ;

    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.

    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.

    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: 17 Ocak 2014
Yüklüyor...

Sayfayı Paylaş