找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 1583|回复: 0

[求助] 用win32gui做了一个托盘程序,如何动态增加菜单条?

7

主题

8

帖子

8

积分

贫民

积分
8
dlx001 发表于 2019-5-17 08:24:19 | 显示全部楼层 |阅读模式
用win32gui做了一个托盘程序,如何动态增加菜单条?
    def __init__(self,
                 icon,
                 hover_text,
                 #menu_opti**,
                 #flag_restart,
                 on_quit=None,
                 default_menu_index=None,
                 window_class_name=None,):

        #global lpsz_ClassName
        self.icon = icon
        self.hover_text = hover_text
        self.on_quit = on_quit
        self.StrClip=[]

        self._next_action_id = FIRST_ID
        self.StrClip=file2lst('string2Clipboard.txt')
        self.menu_acti**_by_id = set()

        self.init_menu()  #在这儿增加      

        self.default_menu_index = (default_menu_index or 0)
        self.window_class_name = window_class_name or "SysTrayIconPy"

        message_map = {win32gui.RegisterWindowMessage("TaskbarCreated"): self.restart,
                       win32con.WM_DESTROY: self.destroy,
                       win32con.WM_COMMAND: self.command,
                       win32con.WM_USER+20 : self.notify,}
        # Register the Window class.
        window_class = win32gui.WNDCLASS()
        hinst = window_class.hInstance = win32gui.GetModuleHandle(None)
        window_class.lpszClassName = self.window_class_name
        window_class.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW;
        window_class.hCursor = win32gui.LoadCursor(0, win32con.IDC_ARROW)
        window_class.hbrBackground = win32con.COLOR_WINDOW
        window_class.lpfnWndProc = message_map # could also specify a wndproc.

        #if flag_restart:
        #    win32gui.UnregisterClass(lpsz_ClassName,None) #######debug
        classAtom = win32gui.RegisterClass(window_class)
        #lpsz_ClassName =classAtom

        # Create the Window.
        style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU
        self.hwnd = win32gui.CreateWindow(classAtom,
                                          self.window_class_name,
                                          style,
                                          0,
                                          0,
                                          win32con.CW_USEDEFAULT,
                                          win32con.CW_USEDEFAULT,
                                          0,
                                          0,
                                          hinst,
                                          None)
        win32gui.UpdateWindow(self.hwnd)
        self.notify_id = None
        self.refresh_icon()

        win32gui.PumpMessages()


        程序运行没有问题,但是在菜单中仅仅调用self.init_menu()增加菜单没有作用,可能还需要再注册 win32gui.RegisterClass(window_class),但是总是失败,请高人指教!


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表