zoukankan      html  css  js  c++  java
  • Total Commander里Help菜单在菜单栏右对齐的效果的实现方法

    Total Commander里Help菜单在菜单栏右对齐的效果是什么原理,用C#怎么做?

    如图:

     谢谢 游民一族 的指点,终于找到方法了。

            [StructLayout(LayoutKind.Sequential)]
            
    public class MenuItemInfo
            {
                
    public Int32 cbSize;
                
    public Int32 fMask;
                
    public Int32 fType;
                
    public Int32 fState;
                
    public Int32 wID;
                
    public IntPtr hSubMenu;
                
    public IntPtr hbmpChecked;
                
    public IntPtr hbmpUnchecked;
                
    public IntPtr dwItemData;
                
    public string dwTypeData;
                
    public Int32 cch;
            }

            [DllImport(
    "user32.dll", CharSet = CharSet.Auto)]
            
    public static extern bool GetMenuItemInfo(
                HandleRef menuHandle,
                Int32 itemIndex,
                
    bool byPosition,
                [In, Out]MenuItemInfo menuItemInfo);

            [DllImport(
    "user32.dll", CharSet = CharSet.Auto)]
            
    public static extern bool SetMenuItemInfo(
                HandleRef menuHandle,
                Int32 itemIndex,
                
    bool byPosition,
                MenuItemInfo menuItemInfo);

            
    const Int32 MIIM_FTYPE = 0x00000100;
            
    const Int32 MFT_RIGHTJUSTIFY = 0x00004000;

            
    public static void RightJustifyMenuItem(MenuItem menuItem)
            {
                HandleRef menuHandle 
    = new HandleRef(menuItem.Parent, menuItem.Parent.Handle);
                MenuItemInfo menuItemInfo 
    = new MenuItemInfo();
                menuItemInfo.cbSize 
    = Marshal.SizeOf(typeof(MenuItemInfo));
                menuItemInfo.fMask 
    = MIIM_FTYPE;
                GetMenuItemInfo(menuHandle, menuItem.Index, 
    true, menuItemInfo);
                menuItemInfo.fType 
    = menuItemInfo.fType | MFT_RIGHTJUSTIFY;
                SetMenuItemInfo(menuHandle, menuItem.Index, 
    true, menuItemInfo);
            }

    刚开始我把MenuItemInfo定义为struct,总是报Attempted to read or write protected memory的异常,搞了好半天才发现要用class。

  • 相关阅读:
    家庭记账本安卓版开发:第六天
    django-自定义过滤器
    django-标签语法
    django-url的分发, 2)起别名, 3)根目录,4)rediect跳转函数:
    django-MTV基础篇
    django-第一天
    jquery---响应式方面应用
    css-基础知识
    HTML--第一章的基本知识
    003
  • 原文地址:https://www.cnblogs.com/rufi/p/1666767.html
Copyright © 2011-2022 走看看