当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

 ·数据显示问题     »显示摘要«
    摘要: 说明: 数据库表中的数据格式如下: a bb ccc 问题: 可我用label显示时,格式就变了如下: abbccc 我如何用label按原格式显示数据,即在label中显示的数据为: a bb ccc ......
 ·maxtor奇事    »显示摘要«
    摘要: 俺 的一块maxtor 金钻四 15g,在kt系列主板(solket 462)、845以上系列主板(solket 478)、以及新的nforce2主板(solket 462)上,都完全正常,可 是一接到815系列主板上,就不能用,只能认出2g,重新分区也没用,可以保证所有硬件都完全正常,,我的分区也完全正常,我是专业维修的,基于安全性考虑,分区和格式化使用的软件都是原厂的专用工具,pq、d......


类的成员如何做线程函数

类的成员如何做线程函数?  
   
  例如  
  UINT   CTDlg::ThreadProc(LPVOID   param)  
  {  
  m_strResult="Thread";  
  m_editResult.SetWindowText(m_strResult); //成员变量  
  }  
   
  这个成员,想要这样用   :  
  AfxBeginThread(ThreadProc,NULL);  
  为什么无法成功?   错误为:  
  error   C2665:   AfxBeginThread   :   none   of   the   2   overloads   can   convert   parameter   1   from   type   unsigned   int   (void   *)  
   
  有人说   类的成员绝对不能做线程函数!是不是真的呀?  
   
  如果我想把带有很多成员变量的成员函数变为独立的函数改如何做啊?  
  例我想把上面那个函数变为   UINT   ThreadProc(LPVOID   param)  
  里面那些   成员变量   该如何使用啊?  
   
  在 CTApp::InitInstance()   有这句 CTDlg   dlg;  
  我想在独立函数ThreadProc()中达到相同的功能是打 :dlg.m_editResult.SetWindowText(m_strResult)   吗?  
  我这样打了是错误的! 打了   dlg   后,后面的成员函数都不会自动列出!  
  到底该如何使用啊?

NO.1   作者: GoldenSea

线程涵数必须是全局或着静态的!你可以把这个函数设为全局的,然后把param传对话框的指针!  
 

NO.2   作者: test7979

的确,线程函数必须是静态的,不过楼主可以这样做:  
   
  写一个线程函数,该函数接受的参数是你那个CTDlg  
   
 

NO.3   作者: steedhorse

同意楼上,如果静态成员不能满足楼主的要求。把this指针传给线程函数,然后在线程函数内部通过this指针来间接调用非静态成员函数。  
   
  类的非静态成员函数之所以不能做线程函数,是因为线程函数需要被声明成WINAPI的,而类的非静态成员函数都是_thiscall的,不管编译器的内部实现如何,至少在逻辑上,后者比前者多一个隐式参数:this指针,因此这两种函数的指针不可以进行相互转换的。

NO.4   作者: test7979

FT,我在打什么   :)  
   
  UINT   CTDlgThreadProc(LPVOID   pParam   )  
  {  
          CTDlg   *   dlg   =   (CTDlg   *)pParam;  
          dlg->ThreadProc();  
  }  
 

NO.5   作者: joinrry

1、定义全局函数  
  2、静态类成员函数

NO.6   作者: yycec

定义  
  class   CMyClass  
  {  
          ...  
          static   DWORD   Thread(LPVOID   lpParameter)  
          ...  
  }  
  启动  
        CWinThread   *pThread   =   ::AfxBeginThread(CMyClass::Thread(&Parameter));  
   
  试一试,还有一种,如果不怕麻烦的话,从CWinThread派生一个类出来。


    摘要: <script> function check(inputname){ 如何把form1.与imputname及.value组合成一个对象并将一个值  赋给form1.a1.value的文本框 } </script> <form name="form1> <input type="text" name="a......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE