参考win32的实现 http://www.cppblog.com/NobleQiao/archive/2010/01/28/106677.html
#encoding=utf-8
import win32gui
import win32con
import win32api
#MessageBox(None,"hello,world","ex1",MB_YESNO or MB_DEFBUTTON3)
#娑堟伅澶勭悊鍑芥暟
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)
#鏄剧ず绐楀彛
win32api.SetWindowLong(hwnd,win32con.GWL_EXSTYLE,win32api.GetWindowLong(hwnd,win32con.GWL_EXSTYLE)|win32con.WS_EX_LAYERED)
win32gui.SetLayeredWindowAttributes(hwnd,0,(255*70)/150,win32con.LWA_ALPHA)
win32gui.ShowWindow(hwnd, win32con.SW_SHOWNORMAL)
#鏇存柊绐楀彛
win32gui.UpdateWindow(hwnd)
#娑堟伅寰幆
win32gui.PumpMessages()
乱码是由于字体编码的问题,这里就不改了,代码很简单,引用资料里也有些解释,够了。