# A demo which creates a view and a frame which displays a PPM format bitmap # # This hasnnt been run in a while, as I dont have many of that format around! import win32ui import win32con import win32api import string class DIBView: def __init__(self, doc, dib): self.dib = dib self.view = win32ui.CreateView(doc) self.width = self.height = 0 # set up message handlers # self.view.OnPrepareDC = self.OnPrepareDC self.view.HookMessage (self.OnSize, win32con.WM_SIZE) def OnSize (self, params): lParam = params[3] self.width = win32api.LOWORD(lParam) self.height = win32api.HIWORD(lParam) def OnDraw (self, ob, dc): # set sizes used for "non strecth" mode. self.view.SetScrollSizes(win32con.MM_TEXT, self.dib.GetSize()) dibSize = self.dib.GetSize() dibRect = (0,0,dibSize[0], dibSize[1]) # stretch BMP. #self.dib.Paint(dc, (0,0,self.width, self.height),dibRect) # non stretch. self.dib.Paint(dc) class DIBDemo: def __init__(self, filename, * bPBM): # init data members f = open(filename, 'rb') dib=win32ui.CreateDIBitmap() if len(bPBM)>0: magic=f.readline() if magic != "P6\n": print("The file is not a PBM format file") raise ValueError("Failed - The file is not a PBM format file") # check magic? rowcollist=f.readline().split() cols=int(rowcollist[0]) rows=int(rowcollist[1]) f.readline() # whats this one? dib.LoadPBMData(f,(cols,rows)) else: dib.LoadWindowsFormatFile(f) f.close() # create doc/view self.doc = win32ui.CreateDoc() self.dibView = DIBView( self.doc, dib ) self.frame = win32ui.CreateMDIFrame() self.frame.LoadFrame() # this will force OnCreateClient self.doc.SetTitle ('DIB Demo') self.frame.ShowWindow() # display the sucka self.frame.ActivateFrame() def OnCreateClient( self, createparams, context ): self.dibView.view.CreateWindow(self.frame) return 1 if __name__=='__main__': import demoutils demoutils.NotAScript()