易语言 动态创建菜单!

易语言 动态创建菜单!,第1张

.DLL命令 _取菜单句柄, 整数型, "user32", "GetMenu", , 取得窗口中一个菜单的句柄 依附于指定窗口的一个菜单的句柄(如果有菜单);否则返回零

.参数 窗口句柄, 整数型, , 窗口句柄。对于vb,这应该是一个窗体句柄。注意可能不是子窗口的句柄

.DLL命令 _创建菜单, 整数型, "user32", "CreatePopupMenu", , 创建一个空的菜单,成功返回菜单句柄,失败返回0

.DLL命令 _添加菜单项, 整数型, , "AppendMenuA", , 在指定的菜单里添加一个菜单项 非零表示成功,零表示失败。会设置GetLastError

.参数 菜单句柄, 整数型, , 菜单句柄

.参数 菜单常数标志, 整数型, , 参考ModifyMenu函数中的菜单常数标志定义表,其中列出了允许使用的所有常数

.参数 新菜单条目ID, 整数型, , 指定菜单条目的新命令ID。如果在wFlags参数中指定了MF_POPUP字段,那么这应该是指向一个d出式菜单的句柄

.参数 标志值, 文本型, , (相应的vb声明见注解),如果在wFlags参数中指定了MF_STRING标志,这就代表在菜单中设置的字串。如设置了MF_BITMAP标志,这就代表一个Long型变量,其中包含了一个位图句柄。如设置了MF_OWNERDRAW,这个值就会包括在DRAWITEMSTRUCT和MEASUREITEMSTRUCT结构中,在条目需要重画的时候由windows发送出去

.DLL命令 SetWindowLong, 整数型, , "SetWindowLongA"

.参数 hwnd, 整数型

.参数 nindex, 整数型

.参数 hnew, 整数型

.DLL命令 CallWindowProc, 整数型, "user32", "CallWindowProcA", , 将消息传答窗口函数

.参数 lpPrevWndFunc, 整数型

.参数 hwnd, 整数型

.参数 msg, 整数型

.参数 wParam, 整数型

.参数 lParam, 整数型

.DLL命令 GetWindowLong, 整数型, "user32", "GetWindowLongA", , 从指定窗口的结构中取得信息 由nIndex决定。零表示出错。会设置GetLastError

.参数 窗口句柄, 整数型, , 欲为其获取信息的窗口的句柄

.参数 属性, 整数型, , 欲取回的信息,可以是下述任何一个常数:GWL_EXSTYLE:扩展窗口样式GWL_STYLE:窗口样式GWL_WNDPROC:该窗口的窗口函数的地址GWL_HINSTANCE:拥有窗口的实例的句柄GWL_HWNDPARENT:该窗口之父的句柄。不要用SetWindowWord来改变这个值GWL_ID:对话框中一个子窗口的标识符GWL_USERDATA:含义由应用程序规定DWL_DLGPROC:这个窗口的对话框函数地址DWL_MSGRESULT:在对话框函数中处理的一条消息返回的值DWL_USER:含义由应用程序规定

.DLL命令 GetMenuString, 整数型, "user32", "GetMenuStringA"

.参数 hMenu, 整数型

.参数 wIDItem, 整数型

.参数 lpString, 文本型

.参数 nMaxCount, 整数型

.参数 wFlag, 整数型

// ID_TEST1 在Resource.h 中定义,随便给个整数值,不要和已有的重复就行了menu1.AppendMenu(MF_STRING,ID_TEST1,"Test1")// 第一项菜单项menu1.AppendMenu(MF_STRING,ID_TEST2,"Test2")// 第二项菜单项 ??menu1.InsertMenu(1,MF_BYPOSITIO

假设包括自定义控件的dll文件为 MyCustomerControl.dll, dll中包括的控件名称为MyControl

1)在项目中,添加对包含自定义控件库MyCustomerControl.dll的引用

2)在Form1后台代码中

public partial class Form1 : Form

{

       //实例化一个自定义控件

       MyControl mc = new MyControl( )

       public Form1()

        {

            InitializeComponent()

        }

        

        //点击菜单时,将自定义控件加载到tabControl1的第一个TabPage上

        private void MenuItem_Click(object sender, EventArgs e)

        {

            TabPage p0 = tabControl1.TabPages[0]

            //如果已经加载了自定义控件,则退出

            if(p0.Controls.Contain(mc)) return

            //否则,添加自定义控件

            p0.Controls.Add(mc)

        }

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11599561.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存