⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chap12_1.htm

📁 着重介绍基于C++的web编程技术
💻 HTM
📖 第 1 页 / 共 2 页
字号:
    <p ALIGN="JUSTIFY">UINT MyThreadProc( LPVOID pParam )</p>
    <p ALIGN="JUSTIFY">{</p>
    <p ALIGN="JUSTIFY">CMyObject* pObject = (CMyObject*)pParam;</p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">if (pObject == NULL ||</p>
    <p ALIGN="JUSTIFY">!pObject-&gt;IsKindOf(RUNTIME_CLASS(CMyObject)))</p>
    <p ALIGN="JUSTIFY">return -1; // </font><font SIZE="3">非法参数</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">// </font><font SIZE="3">用</font><font FACE="Times New Roman" SIZE="3">pObject</font><font SIZE="3">对象来完成某项工作</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">return 0; // </font><font SIZE="3">线程正常结束</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">}</p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">AfxBeginThread</font><font SIZE="3">的声明为:</p>
    <blockquote>
      <blockquote>
        <blockquote>
          </font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">CWinThread* 
          AfxBeginThread( AFX_THREADPROC pfnThreadProc, LPVOID pParam, int nPriority = 
          THREAD_PRIORITY_NORMAL, UINT nStackSize = 0, DWORD dwCreateFlags = 0, 
          LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL );</font></p>
        </blockquote>
      </blockquote>
    </blockquote>
    <p><font SIZE="3"> </p>
    <p ALIGN="JUSTIFY">参数</font><font FACE="Times New Roman" SIZE="3">pfnThreadProc</font><font SIZE="3">是工作线程函数的地址。</font><font FACE="Times New Roman" SIZE="3">pParam</font><font SIZE="3">是传递给线程函数的参数。</font><font FACE="Times New Roman" SIZE="3">nPriority</font><font SIZE="3">是线程的优先级,一般是</font><font FACE="Times New Roman" SIZE="3">THREAD_PRIORITY_NORMAL</font><font SIZE="3">,若为</font><font FACE="Times New Roman" SIZE="3">0</font><font SIZE="3">,则使用创建线程的优先级。</font><font FACE="Times New Roman" SIZE="3">nStackSize</font><font SIZE="3">说明了线程的堆栈尺寸,若为</font><font FACE="Times New Roman" SIZE="3">0</font><font SIZE="3">则堆栈尺寸与创建线程相同。</font><font FACE="Times New Roman" SIZE="3">dwCreateFlags</font><font SIZE="3">指定了线程的初始状态,如果为</font><font FACE="Times New Roman" SIZE="3">0</font><font SIZE="3">,那么线程在创建后立即执行,如果为</font><font FACE="Times New Roman" SIZE="3">CREATE_SUSPENDED</font><font SIZE="3">,则线程在创建后就被挂起。参数</font><font FACE="Times New Roman" SIZE="3">lpSecurityAttrs</font><font SIZE="3">用来说明保密属性,一般为</font><font FACE="Times New Roman" SIZE="3">0</font><font SIZE="3">。函数返回新建的</font><font FACE="Times New Roman" SIZE="3">CWinThread</font><font SIZE="3">对象的指针。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">程序应该把</font><font FACE="Times New Roman" SIZE="3">AfxBeginThread</font><font SIZE="3">返回的</font><font FACE="Times New Roman" SIZE="3">CWinThread</font><font SIZE="3">指针保存起来,以便对创建的线程进行控制。例如,可以调用</font><font FACE="Times New Roman" SIZE="3">CWinThread::SetThreadPriority</font><font SIZE="3">来设置线程的优先级,用</font><font FACE="Times New Roman" SIZE="3">CWinThread::SuspendThread</font><font SIZE="3">来挂起线程。如果线程被挂起,那么直到调用</font><font FACE="Times New Roman" SIZE="3">CWinThread::ResumeThread</font><font SIZE="3">后线程才开始运行。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">如果要创建用户界面线程,那么必须从</font><font FACE="Times New Roman" SIZE="3">CWinThread</font><font SIZE="3">派生一个新类。事实上,代表进程主线程的</font><font FACE="Times New Roman" SIZE="3">CWinApp</font><font SIZE="3">类就是</font><font FACE="Times New Roman" SIZE="3">CWinThread</font><font SIZE="3">的派生类。派生类必须用</font><font FACE="Times New Roman" SIZE="3">DECLARE_DYNCREATE</font><font SIZE="3">和</font><font FACE="Times New Roman" SIZE="3">IMPLEMENT_DYNCREATE</font><font SIZE="3">宏来声明和实现。需要重写派生类的</font><font FACE="Times New Roman" SIZE="3">InitInstance</font><font SIZE="3">、</font><font FACE="Times New Roman" SIZE="3">ExitInstance</font><font SIZE="3">、</font><font FACE="Times New Roman" SIZE="3">Run</font><font SIZE="3">等函数。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">可以使用</font><font FACE="Times New Roman" SIZE="3">AfxBeginThread</font><font SIZE="3">函数的另一个版本来创建用户界面线程。函数的声明为:</p>
    <blockquote>
      <blockquote>
        <blockquote>
          </font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">CWinThread* 
          AfxBeginThread( CRuntimeClass* pThreadClass, int nPriority = THREAD_PRIORITY_NORMAL, UINT 
          nStackSize = 0, DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL );</font></p>
        </blockquote>
      </blockquote>
    </blockquote>
    <p><font SIZE="3"> </p>
    <p ALIGN="JUSTIFY">参数</font><font FACE="Times New Roman" SIZE="3">pThreadClass</font><font SIZE="3">指向一个</font><font FACE="Times New Roman" SIZE="3">CRuntimeClass</font><font SIZE="3">对象,该对象是用</font><font FACE="Times New Roman" SIZE="3">RUNTIME_CLASS</font><font SIZE="3">宏从</font><font FACE="Times New Roman" SIZE="3">CWinThread</font><font SIZE="3">的派生类创建的。其它参数以及函数的返回值与第一个版本的</font><font FACE="Times New Roman" SIZE="3">AfxBeginThread</font><font SIZE="3">是一样的。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">当发生下列事件之一时,线程被终止:</p>
    <blockquote>
      <blockquote>
        <p ALIGN="JUSTIFY">线程调用</font><font FACE="Times New Roman" SIZE="3">ExitThread</font><font SIZE="3">。</p>
        <p ALIGN="JUSTIFY">线程函数返回,即线程隐含调用了</font><font FACE="Times New Roman" SIZE="3">ExitThread</font><font SIZE="3">。</p>
        </font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">ExitProcess</font><font SIZE="3">被进程的任一线程显示或隐含调用。</p>
        <p ALIGN="JUSTIFY">用线程的句柄调用</font><font FACE="Times New Roman" SIZE="3">TerminateThread</font><font SIZE="3">。</p>
        <p ALIGN="JUSTIFY">用进程句柄调用</font><font FACE="Times New Roman" SIZE="3">TerminateProcess</font><font SIZE="3">。</p>
        </font>
      </blockquote>
    </blockquote>
    <div align="center"><center><table border="0" cellpadding="0" cellspacing="0" width="615">
      <tr>
        <td><a href="chap12.htm">上一页</a></td>
        <td><p align="right"><a href="chap12_2.htm">下一页</a></td>
      </tr>
    </table>
    </center></div><font SIZE="5"><hr noshade color="#3973DE" size="1">
    <p align="center"></font><font size="2" color="#000000">本教程由<a href="http://vcdynasty.yeah.net">Visual C++王朝(Where programmers come together)</a>协助制作<br>
    未经许可,请勿以任何形式复制</font></td>
    <b>
  </tr>
</table>
</center></div>

<p ALIGN="CENTER"></b><font SIZE="5"> </font><font FACE="Times New Roman" SIZE="5"></p>
</font><font FACE="Times New Roman" SIZE="3">

<p></font><b><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
</font></b>

<p><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>

<p></font> </p>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -