Forum: Ruby ruby win32api call getMenuItemInfo

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
214e01387925d96c9a074de951dcaf3d?d=identicon&s=25 Ted Baker (tedbaker)
on 2009-02-06 15:34
Hi all,

I have successfully managed to implement the following apis

findWindow=Win32API.new("user32.dll", "FindWindow", ['P','P'], 'N')
sendMessage=Win32API.new("user32.dll", "SendMessage",['N','N','N','P'],
'N')
getMenu=Win32API.new("user32.dll", "GetMenu", ['N'], 'N')
getMenuItemCount=Win32API.new("user32.dll", "GetMenuItemCount",['N'],
'N')
getSubMenu=Win32API.new("user32.dll", "GetSubMenu", ['N','N'], 'N')
deleteMenu=Win32API.new("user32.dll", "DeleteMenu", ['N','N','N',],'N')
drawMenuBar=Win32API.new("user32.dll", "DrawMenuBar", ['N'], 'N')
setWindowLong=Win32API.new("user32.dll", "SetWindowLong",['N','N','N'],
'N')

but am unable to get getMenuItemInfo to work, this is because it takes a
type structure and boolean as parameters and i can't figure it out...

this is what i have

getMenuItemInfo =Win32API.new("user32.dll", "GetMenuItemInfo",
['L','L','NEED','NEED'], 'L')

the api is as follows...

BOOL GetMenuItemInfo(
    HMENU hMenu,
    UINT uItem,
    BOOL fByPosition,
    LPMENUITEMINFO lpmii
);

typedef struct tagMENUITEMINFO {
  UINT    cbSize;
  UINT    fMask;
  UINT    fType;
  UINT    fState;
  UINT    wID;
  HMENU   hSubMenu;
  HBITMAP hbmpChecked;
  HBITMAP hbmpUnchecked;
  ULONG_PTR dwItemData;
  LPTSTR  dwTypeData;
  UINT    cch;
  HBITMAP hbmpItem;
} MENUITEMINFO, *LPMENUITEMINFO;

any help greatly appreciated...

Thanks

Ted
Dce0999389d102f9a313af625375304c?d=identicon&s=25 daz (Guest)
on 2009-03-10 04:40
(Received via mailing list)
Ted Baker wrote:
 > Hi all,
 >
 > I have successfully managed to implement the following apis
 >
 > findWindow=Win32API.new("user32.dll", "FindWindow", ['P','P'], 'N')
 > sendMessage=Win32API.new("user32.dll",
"SendMessage",['N','N','N','P'],
 > 'N')
 > getMenu=Win32API.new("user32.dll", "GetMenu", ['N'], 'N')
 > getMenuItemCount=Win32API.new("user32.dll", "GetMenuItemCount",['N'],
 > 'N')
 > getSubMenu=Win32API.new("user32.dll", "GetSubMenu", ['N','N'], 'N')
 > deleteMenu=Win32API.new("user32.dll", "DeleteMenu",
['N','N','N',],'N')
 > drawMenuBar=Win32API.new("user32.dll", "DrawMenuBar", ['N'], 'N')
 > setWindowLong=Win32API.new("user32.dll",
"SetWindowLong",['N','N','N'],
 > 'N')
 >
 > but am unable to get getMenuItemInfo to work, this is because it
takes a
 > type structure and boolean as parameters and i can't figure it out...
 >
 > this is what i have
 >
 > getMenuItemInfo =Win32API.new("user32.dll", "GetMenuItemInfo",
 > ['L','L','NEED','NEED'], 'L')
 >
 > the api is as follows...
 >
 > BOOL GetMenuItemInfo(
 >     HMENU hMenu,
 >     UINT uItem,
 >     BOOL fByPosition,
 >     LPMENUITEMINFO lpmii
 > );
 >
 > typedef struct tagMENUITEMINFO {
 >   UINT    cbSize;
 >   UINT    fMask;
 >   UINT    fType;
 >   UINT    fState;
 >   UINT    wID;
 >   HMENU   hSubMenu;
 >   HBITMAP hbmpChecked;
 >   HBITMAP hbmpUnchecked;
 >   ULONG_PTR dwItemData;
 >   LPTSTR  dwTypeData;
 >   UINT    cch;
 >   HBITMAP hbmpItem;
 > } MENUITEMINFO, *LPMENUITEMINFO;
 >
 > any help greatly appreciated...
 >
 > Thanks
 >
 > Ted


Very late reply.

You should have been directed towards Ruby/DL in the
standard library.

This is now preferred to Win32API which is in the process
of being obsoleted.

http://www.jbrowse.com/text/rdl_en.html


daz
This topic is locked and can not be replied to.