| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 652 人关注过本帖
标题:有关线程问题 请教下啊 搞好久了
取消只看楼主 加入收藏
linkang1024
Rank: 2
等 级:论坛游民
帖 子:90
专家分:83
注 册:2011-10-10
结帖率:70.83%
收藏
已结贴  问题点数:20 回复次数:1 
有关线程问题 请教下啊 搞好久了
private:
    DWORD WINAPI GetCom(LPVOID lpParameter);
初始化
BOOL CConfigPort::OnInitDialog()
{
    CDialog::OnInitDialog();
    HANDLE hThread=CreateThread(NULL, 0, GetCom, NULL, 0, NULL);
    CloseHandle(hThread);

}
函数实现
DWORD WINAPI CConfigPort::GetCom(LPVOID lpParameter)
{
    HANDLE  hCom;
    int i,num,k,j;
    CString str;
    BOOL flag;
    const int Comb[3] = {IDC_COMBO1, IDC_COMBO2, IDC_COMBO3};
    cnComm *mComAll[3] = {&mCom1, &mCom2, &mCom3};
    for(j=0; j<3; j++)
        ((CComboBox *)GetDlgItem(Comb[j]))->ResetContent();  //init combox0
    flag = FALSE;
    num = 0;
    for(j=0; j<3; j++)
    {
        for (i = 1;i <= 16;i++)
        {//此程序支持16个串口
            str.Format("\\\\.\\COM%d",i);
            hCom = CreateFile(str, 0, 0, 0,
                OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
            if(INVALID_HANDLE_VALUE != hCom )
            {//能打开该串口,则添加该串口
                CloseHandle(hCom);
                str = str.Mid(4);
                ((CComboBox *)GetDlgItem(Comb[j]))->AddString(str);
                if (flag == FALSE)
                {
                    flag = TRUE;
                    num = i;
                }
            }
        }
    }

    for(j=0; j<3; j++)
    {
        i = ((CComboBox *)GetDlgItem(Comb[j]))->GetCount();
        if (i == 0)
        {//若找不到可用串口则禁用“打开串口”功能
            ((CComboBox *)GetDlgItem(Comb[j]))->EnableWindow(FALSE);
        }
        else
        {
            k = ((CComboBox *)GetDlgItem((Comb[j])))->GetCount();
            ((CComboBox *)GetDlgItem(Comb[j]))->SetCurSel(k - 1);
            (*mComAll)++->BindCommPort(num);
            //mCom1.BindCommPort(num);
        }
    }

}

总有错误  error C2664: 'CreateThread' : cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall *)(void *)'

按网上的教程  我定义成静态static DWORD WINAPI GetCom(LPVOID lpParameter);   但是问题在于 我函数里有其他的类  CComboBox  不能定义成静态  真心不知道怎么处理  求解答、
搜索更多相关主题的帖子: private 
2013-08-29 23:06
linkang1024
Rank: 2
等 级:论坛游民
帖 子:90
专家分:83
注 册:2011-10-10
收藏
得分:0 
回复 2楼 yuccn
谢谢啊  现在程序运行比之前快多了  真心感谢.
2013-08-30 16:03
快速回复:有关线程问题 请教下啊 搞好久了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036478 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved