首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • _beginThread新建的线程调用MessageBox没有任何反应为什么?
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • udvlin
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-08-23 15:02:33 楼主
    #include <iostream>
    #include <string>
    #include <process.h>
    #include <windows.h>

    using namespace std;
    void _cdecl  thr(void * param);

    void main() {

    ULONG hThread = _beginthread(thr,1024,NULL);

    const char * str = "hello world!";
    string str1(str);

    int a[] = {'a',2,3,4,4};


    cout < < str1;
    cout < < *(a+1);




    cin>>str1;
    }

    void  thr(void * param)
    {

    cout < <"i'm new thread!";
    MessageBox(NULL,(LPCSTR) TEXT("ÄãºÃÊÀ½ç!"),(LPCSTR) TEXT("ÐÂÏ̴߳°¿Ú!!"),MB_OK);

    }

    如果吧MessageBox放到main中是正常的!
    5  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • nevergone
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 18:41:251楼 得分:0
    在我机器上有messagebox
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • superdiablo
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 20:20:462楼 得分:0
    不要在非用户界面线程中显示对话框。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • uoyevoli
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 21:15:333楼 得分:0
    同意楼上的,最好只有一个线程操作界面
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • udvlin
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-25 13:19:024楼 得分:0
    请教2楼的,为什么不能在非用户界面线程中显示对话框?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • bukkake
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-25 17:55:355楼 得分:0
    Code Generation调成多线程了么?
    实际的工作中如果确实需要显示对话框,可以想UI线程发消息,让UI线程显示
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • missdeer
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-25 20:56:366楼 得分:0
    引用 4 楼 udvlin 的回复:
    请教2楼的,为什么不能在非用户界面线程中显示对话框?

    不好好看教科书哈
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chzhk007
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-26 18:32:107楼 得分:0
    你的MessageBox都没有父窗口,你叫它怎么显示呢?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhoutler
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-27 00:39:118楼 得分:0
    MFC在这方面有缺陷的,工作者线程,一般处理数据,GUI线程进行界面显示处理的。
    可以考虑用Dot net。MFC老拉,也跟不上时代的发展了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liweiwei0808
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-28 17:47:099楼 得分:0
    AfxMessageBox呢?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • udvlin
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-30 13:39:4310楼 得分:0
    引用 7 楼 chzhk007 的回复:
    你的MessageBox都没有父窗口,你叫它怎么显示呢?

    那为什么在main中MessageBox可以显示呢?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • udvlin
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-30 13:40:5211楼 得分:0
    引用 5 楼 bukkake 的回复:
    Code Generation调成多线程了么?
    实际的工作中如果确实需要显示对话框,可以想UI线程发消息,让UI线程显示


    请教何为UI线程?

    写在main中的是UI线程吗?如何区分UI线程和普通线程?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zzultc
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-30 14:05:3212楼 得分:0
    我觉得问题有两个:
    1、_beginthread这样的函数启动线程时,线程函数应该是WINAPI类型的,也就是应该是stdcal类型。
    2、主线程执行的快,结束后,进程结束,你的副线程只是刚刚被构造,还没有来的及执行就又被kill了,你可以在主线程里加入等待函数,或者简单的sleep(2000)等待2秒看看。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • oo_v_oo
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-30 14:14:2213楼 得分:0
    包工头都跑路了,工人还干个啥
    想法把包工头留下吧
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lhtang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-30 16:39:4714楼 得分:0
    8楼鄙视你,mfc能落伍?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wish_cn
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-31 01:02:0715楼 得分:0
    你的主线程退太快了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • shuice
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-09-24 18:07:2316楼 得分:0
    因为main函数结束的太快了,你把main函数最后加一个cin>>i,试试
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chenhuaichao314
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-09-26 12:32:1117楼 得分:0
    引用楼主 udvlin 的帖子:
    #include <iostream>
    #include <string>
    #include <process.h>
    #include <windows.h>

    using namespace std;
    void _cdecl  thr(void * param);

    void main() {

    ULONG hThread = _beginthread(thr,1024,NULL);

    const char * str = "hello world!";
    string str1(str);

    int a[] = {'a',2,3,4,4};

    cout < < str1;
    cout < < *(a+1);

    cin>>str1;      //这里有这样一个Cin输入,对话框可以显示。(我已在vs2005测试通过!!!)
    }

    void  thr(void * param)
    {



    有这样一个输入等待,主线程没有退出,可以弹出对话框 !
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved