CWinThread详细使用方法

赤勇玄心行天道 2009-01-15 03:22:38
请问谁有CWinThread的详细使用方法,实在不行给个例子也可以,我上网找了很久都没找到,只好求救大家了!
...全文
11057 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanglei5695312 2010-07-20
  • 打赏
  • 举报
回复
MARK,学习
宿莽_csdn 2010-04-18
  • 打赏
  • 举报
回复
Cwinthread
mark
叶落寒山 2009-01-16
  • 打赏
  • 举报
回复
DECLARE_DYNCREATE 宏。支持动态创建。
Q_Jizi 2009-01-16
  • 打赏
  • 举报
回复
VC代码库的一个专题 很详细
http://www.vckbase.com/document/finddoc.asp?keyword=%CF%DF%B3%CC
  • 打赏
  • 举报
回复
DECLARE_DYNCREATE(CTestThread)
IMPLEMENT_DYNCREATE(CTestThread, CWinThread)
请问4楼的,这两句是什么意思?
Arron 2009-01-16
  • 打赏
  • 举报
回复
DECLARE_DYNCREATE(CTestThread)
IMPLEMENT_DYNCREATE(CTestThread, CWinThread)

支持 类的动态创建 相当于 从类的名字 可以直接创建类 RUNTIMECLASS
exceed_me 2009-01-15
  • 打赏
  • 举报
回复
学习,mark
Learn-anything 2009-01-15
  • 打赏
  • 举报
回复
http://www.vckbase.com/document/finddoc.asp?keyword=%CF%DF%B3%CC
叶落寒山 2009-01-15
  • 打赏
  • 举报
回复 1
也可以用线程派生类的方式。


.h 文件
#define WM_TEST WM_USER + 1

class CTestThread : public CWinThread
{
DECLARE_DYNCREATE(CTestThread)
protected:
CTestThread ();
virtual ~CTestThread ();
public:
virtual BOOL InitInstance();
virtual int ExitInstance();
protected:
afx_msg void OnTest(WPARAM wParam,LPARAM lParam);
DECLARE_MESSAGE_MAP()
};

.Cpp 文件
#include "stdafx.h"
#include "TestThread.h"

IMPLEMENT_DYNCREATE(CTestThread, CWinThread)

CTestThread::CTestThread()
{
}

CTestThread::~CTestThread()
{
}

BEGIN_MESSAGE_MAP(CTestThread, CWinThread)
ON_THREAD_MESSAGE(WM_TEST,OnTest)
END_MESSAGE_MAP()

BOOL CTestThread::InitInstance()
{
return TRUE;
}

int CTestThread::ExitInstance()
{
return CWinThread::ExitInstance();
}

void CTestThread::OnTest(WPARAM wParam,LPARAM lParam)
{
AfxMessageBox("test");
}

调用的地方
CWinThread* m_pThrd;
//启动
m_pThrd = AfxBeginThread(RUNTIME_CLASS(CTestThread));

// 需要执行线程中的操作时
m_pThrd->PostThreadMessage(WM_TEST,NULL,NULL);

// 结束线程
HANDLE hp=m_pThrd->m_hThread;
if (hp)
{
if (WaitForSingleObject(hp, 1) != WAIT_OBJECT_0)
{
TerminateThread(hp,0);
}
CloseHandle(hp);
}


这是框架,楼主要是需要什么操作,自己定义、添加自己的线程消息就可以了。
杭州浪子 2009-01-15
  • 打赏
  • 举报
回复
线程函数声明记得用上static...
例子正好身边没有,在自己笔记本上~
纯冰糖 2009-01-15
  • 打赏
  • 举报
回复
先这样做:
CWinThread g_Thread(yourThreadProc,(LPVOID)(yourThreadProcParam));
//使用类构造函数CWinThread(AFX_THREADPROC pfnThreadProc, LPVOID pParam)传入线程函数及其参数。
再Create线程:
g_Thread.CreateThread() //用默认参数,当然,也可以不用。
这样的就和使用:
CWinThread* g_pThread = AfxBeginThread(yourThreadProc,(LPVOID)(yourThreadProcParam));
一样了。

xxweilw 2009-01-15
  • 打赏
  • 举报
回复
CWinThread类成员

数据成员 m_bAutoDelete 指定线程结束时是否要销毁对象
m_hThread 当前线程的句柄
m_nThreadID 当前线程的ID
m_pMainWnd 保存指向应用程序的主窗口的指针
m_pActiveWnd 指向容器应用程序的主窗口,当一个OLE服务器被现场激活时

构造函数 CWinThread 构造一个CWinThread对象
CreateThread 开始一个CWinThread对象的执行

操作 GetMainWnd 查询指向线程主窗口的指针
GetThreadPriority 获取当前线程的优先级
PostThreadMessage 向另外的CWinThread对象传递一条消息
ResumeThread 减少一个线程的挂起计数
SetThreadPriority 设置当前线程的优先级
SuspendThread 增加一个线程的挂起计数

可重载函数 ExitInstance 重载以进行线程终止时的清理工作
InitInstance 重载以实现线程实例的初始化
OnIdle 重载以进行线程特定的空闲操作
PreTranslateMessage 在消息被发送到Windows函数TranslateMessage和DispatchMessage之前过滤消息
IsIdleMessage 检测特定的消息
ProcessWndProcException 截获线程消息和命令处理函数出现的所有未处理的异常
ProcessMessageFilter 在特定的消息到达应用程序之前截获消息
Run 线程的具有消息收发功能的控制函数,可重载以定制缺省的消息循环

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧