2011-03-18 22 views

回答

5

這對於win32gui模塊及其朋友win32api和win32con最容易。沒有必要將自己的ctypes包裝器寫入Windows API。最簡單的Petzold風格的應用出現這樣的:

import win32api, win32con, win32gui 

class MyWindow: 

    def __init__(self): 
     win32gui.InitCommonControls() 
     self.hinst = win32api.GetModuleHandle(None) 
     className = 'MyWndClass' 
     message_map = { 
      win32con.WM_DESTROY: self.OnDestroy, 
     } 
     wc = win32gui.WNDCLASS() 
     wc.style = win32con.CS_HREDRAW | win32con.CS_VREDRAW 
     wc.lpfnWndProc = message_map 
     wc.lpszClassName = className 
     win32gui.RegisterClass(wc) 
     style = win32con.WS_OVERLAPPEDWINDOW 
     self.hwnd = win32gui.CreateWindow(
      className, 
      'My win32api app', 
      style, 
      win32con.CW_USEDEFAULT, 
      win32con.CW_USEDEFAULT, 
      300, 
      300, 
      0, 
      0, 
      self.hinst, 
      None 
     ) 
     win32gui.UpdateWindow(self.hwnd) 
     win32gui.ShowWindow(self.hwnd, win32con.SW_SHOW) 

    def OnDestroy(self, hwnd, message, wparam, lparam): 
     win32gui.PostQuitMessage(0) 
     return True 

w = MyWindow() 
win32gui.PumpMessages() 
+0

Python版本是3.2,我得到ImportError:沒有模塊名爲win32con錯誤消息。看來,沒有win32api,win32con,win32gui模塊 – 2011-03-18 20:01:46

+0

你只是沒有安裝它。從這裏獲取:http://sourceforge.net/projects/pywin32/files/pywin32/Build216/ – 2011-03-18 20:33:49

+0

我看到了,它是單獨安裝的,謝謝! – 2011-03-18 20:38:47