免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3804 | 回复: 0
打印 上一主题 下一主题

用Pywin32 写最简纯Win32API应用 报错 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-13 18:05 |只看该作者 |倒序浏览
我用的python 2.5.4 + pywin32 2.12 @ winXP+SP2 +VC6.0
装了pywin32之后,想要写一个使用纯win32API的最简应用作为以后的模板。代码参考pywin32自带的demos里的
win32gui_demo、win32gui_dialog等几个py代码和《Programing windows 95》里第三章的那个
HELLOWIN.C(就是纯C纯API的最简win程序)

代码如下:

#-*- coding:UTF-8 -*-
# The Demostrator Application with pure Win32API
import win32gui, win32con, win32api
def OnClose(hwnd, msg, wparam, lparam):
    win32gui.DestroyWindow(hwnd)
def OnDestroy(hwnd, msg, wparam, lparam):
    win32gui.PostQuitMessage(0)
message_map = {
##    win32con.WM_SIZE: OnSize,
##    win32con.WM_COMMAND: OnCommand,
##    win32con.WM_NOTIFY: OnNotify,
##    win32con.WM_INITDIALOG: OnInitDialog,
##    WM_SEARCH_RESULT:OnSearchResult,
##    WM_SEARCH_FINISHED:OnSearchFinished,
    win32con.WM_CLOSE: OnClose,
    win32con.WM_DESTROY: OnDestroy
}


def winmain():
    wc = win32gui.WNDCLASS()
#    hinst = wc.hInstance = win32gui.GetModuleHandle(None)
    wc.lpszClassName = "Win32 AppDemo"
    wc.style =  win32con.CS_GLOBALCLASS|win32con.CS_VREDRAW |
win32con.CS_HREDRAW
    wc.hbrBackground = win32con.COLOR_WINDOW+1
    wc.lpfnWndProc=message_map
    classAtom=win32gui.RegisterClass(wc)
    style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU
    hwnd = win32gui.CreateWindow(classAtom,
        'The Demo Application with pure Win32API',style,
        100,100,900,900,
        0, 0, 0, None)
    s=win32gui.GetWindowLong(hwnd,win32con.GWL_EXSTYLE)
    win32gui.SetWindowLong(hwnd, win32con.GWL_EXSTYLE, s|
win32con.WS_EX_LAYERED)
    win32gui.ShowWindow(hwnd,0)
    win32gui.UpdateWindow(hwnd)
    win32gui.PumpMessages()
    win32gui.DestroyWindow(hwnd)
    win32gui.UnregisterClass(classAtom, 0)
if __name__ == "__main__":
    winmain()

现在问题是,在IDLE中run,整个IDLE呆滞,没有其它窗口弹出,如果点击IDLE的界面,跳出一个messagebox,标题
为“Microsoft Visual C++ Runtime Library”,内容为:
“Runtime Error!
Program:E:\Coding\Python25\pythonw.exe
This application has requested the runtime terminate it in an unusual
way,Please ontract the application's support team for more
information."
点击确定之后,IDLE就自动关闭了。在google和groups中到处搜索没有看到有关的解释,只好上来大喊求助。

PS: 我安装pywin32后得到的Pythonwin.exe似乎有很奇怪的毛病,新建或打开任何一个py代码,修改之后保存,代码就会消失,原文
件变成纯文本,其中为大量连续的 "==",字节数似乎是特定整数,只有一行,没有换行符。反复多次试验,这一现象不变,不知是何原因。我的
pythonwin的路径是...
\Python25\Lib\site-packages\pythonwin\pythonwin.exe
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP