I looked all over the 'net today and could not find any examples of how to build a Python application using the win32gui module. There are some examples in the distribution but they really cover how to write a application as a top-level window.

Using that code and some examples from win32 programming sites, I hacked together some code that almost works. The only problem that I have with it is that the program does not end after closing the main window. I am calling PostQuitMessage when the WM_DESTROY message is received, but this doesn't seem to work. I am assuming there is something wrong with my main loop. Can anyone help?

Thanks,
Chris


Code below ----------

#example1.py
import struct
import win32api
import win32con
import win32gui

class MainWindow:
   def __init__(self):
      win32gui.InitCommonControls()
      self.hinst = win32api.GetModuleHandle(None)
   def CreateWindow(self):
      className = self.RegisterClass()
      self.BuildWindow(className)

def RegisterClass(self):
className = "TeSt"
message_map = {
win32con.WM_DESTROY: self.OnDestroy,
}
wc = win32gui.WNDCLASS()
wc.style = win32con.CS_HREDRAW | win32con.CS_VREDRAW
wc.lpfnWndProc = message_map
wc.cbWndExtra = 0
wc.hCursor = win32gui.LoadCursor( 0, win32con.IDC_ARROW )
wc.hbrBackground = win32con.COLOR_WINDOW + 1
wc.hIcon = win32gui.LoadIcon(0, win32con.IDI_APPLICATION)
wc.lpszClassName = className
# C code: wc.cbWndExtra = DLGWINDOWEXTRA + sizeof(HBRUSH) + (sizeof(COLORREF));
wc.cbWndExtra = win32con.DLGWINDOWEXTRA + struct.calcsize("Pi")
#wc.hIconSm = 0
classAtom = win32gui.RegisterClass(wc)
return className


   def BuildWindow(self, className):
      style = win32con.WS_OVERLAPPEDWINDOW
      xstyle = win32con.WS_EX_LEFT
      self.hwnd = win32gui.CreateWindow(className,
                            "ThisIsJustATest",
                            style,
                            win32con.CW_USEDEFAULT,
                            win32con.CW_USEDEFAULT,
                            500,
                            400,
                            0,
                            0,
                            self.hinst,
                            None)
      win32gui.ShowWindow(self.hwnd, win32con.SW_SHOW)

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

w = MainWindow()
w.CreateWindow()
win32gui.PumpMessages()

-------
End code


-- Guybrush: How can you see without eyeballs? Murray: How can you walk around without a brain? Some things no one can answer. _______________________________________________ Python-win32 mailing list [EMAIL PROTECTED] http://mail.python.org/mailman/listinfo/python-win32

Reply via email to