# 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 win32api import win32con import win32ui 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()