Chinaunix首页 | 论坛 | 博客
  • 博客访问: 846053
  • 博文数量: 756
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 4980
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:40
文章分类

全部博文(756)

文章存档

2011年(1)

2008年(755)

我的朋友

分类:

2008-10-13 16:14:23

今天blog上有个朋友问我如何用Python的win32gui包来画一个窗体。其实win32gui包就是包装了一下Windows API,所以写出的代码和用Windows API写出的代码的结构是完全一样的。下面就是一段示例代码,是用一个老外网上搞到的,从下面代码中可以看出解释性语言的代码精练之处。

import win32gui, win32con

def wndProc(hwnd, msg, wParam, lParam):
    if msg == win32con.WM_CREATE: print 'message: WM_CREATE'
    if msg == win32con.WM_SIZE: print 'message: WM_SIZE'
    if msg == win32con.WM_PAINT: print 'message: WM_PAINT'
    if msg == win32con.WM_CLOSE: print 'message: WM_CLOSE'
    if msg == win32con.WM_DESTROY:
        print 'message: WM_DESTROY'
        win32gui.PostQuitMessage(0)
    return win32gui.DefWindowProc(hwnd, msg, wParam, lParam)
       
wndClsStruct = win32gui.WNDCLASS()
wndClsStruct.hbrBackground = win32con.COLOR_BTNFACE + 1
wndClsStruct.hCursor = win32gui.LoadCursor(0, win32con.IDC_ARROW)
wndClsStruct.hIcon = win32gui.LoadIcon(0, win32con.IDI_APPLICATION)
wndClsStruct.lpszClassName = "MySimpleWindow"
wndClsStruct.lpfnWndProc = wndProc

wndClassAtom = win32gui.RegisterClass(wndClsStruct)

hwnd = win32gui.CreateWindow(
            wndClassAtom, 'Spark Test', win32con.WS_OVERLAPPEDWINDOW,
            win32con.CW_USEDEFAULT, win32con.CW_USEDEFAULT,
            win32con.CW_USEDEFAULT, win32con.CW_USEDEFAULT,
            0,0, 0, None)

win32gui.ShowWindow(hwnd, win32con.SW_SHOWNORMAL)
win32gui.UpdateWindow(hwnd)
win32gui.PumpMessages()
下面再来个贴图,看看运行效果:


--------------------next---------------------

阅读(697) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~