CWinThread详细使用方法 请问谁有CWinThread的详细使用方法,实在不行给个例子也可以,我上网找了很久都没找到,只好求救大家了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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 线程的具有消息收发功能的控制函数,可重载以定制缺省的消息循环 先这样做:CWinThread g_Thread(yourThreadProc,(LPVOID)(yourThreadProcParam)); //使用类构造函数CWinThread(AFX_THREADPROC pfnThreadProc, LPVOID pParam)传入线程函数及其参数。再Create线程:g_Thread.CreateThread() //用默认参数,当然,也可以不用。这样的就和使用:CWinThread* g_pThread = AfxBeginThread(yourThreadProc,(LPVOID)(yourThreadProcParam));一样了。 线程函数声明记得用上static...例子正好身边没有,在自己笔记本上~ 也可以用线程派生类的方式。.h 文件#define WM_TEST WM_USER + 1class 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); }这是框架,楼主要是需要什么操作,自己定义、添加自己的线程消息就可以了。 http://www.vckbase.com/document/finddoc.asp?keyword=%CF%DF%B3%CC DECLARE_DYNCREATE(CTestThread)IMPLEMENT_DYNCREATE(CTestThread, CWinThread)请问4楼的,这两句是什么意思? VC代码库的一个专题 很详细 http://www.vckbase.com/document/finddoc.asp?keyword=%CF%DF%B3%CC DECLARE_DYNCREATE 宏。支持动态创建。 DECLARE_DYNCREATE(CTestThread) IMPLEMENT_DYNCREATE(CTestThread, CWinThread) 支持 类的动态创建 相当于 从类的名字 可以直接创建类 RUNTIMECLASS shellexecute 关闭 谁能帮我看下这些代码,为什么PING不通局域网其它机子!!! 如何动态改变Picture控件里的图片? 动态建立CEdit 和 CComboBox 的问题 注册表被恶意代码禁用,如何修改过来?(在线等) MoveWindow时的屏幕闪动问题。。 ListCtrl显示刷新问题 我的显示桌面给我删了,怎么样做一个? 我想找个图标,不知那个网站有 创建子窗口的问题? 动态库,CSerialPort串口类 响应事件 关于WDM驱动程序与应用程序的GUID交互问题
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 线程的具有消息收发功能的控制函数,可重载以定制缺省的消息循环
CWinThread g_Thread(yourThreadProc,(LPVOID)(yourThreadProcParam));
//使用类构造函数CWinThread(AFX_THREADPROC pfnThreadProc, LPVOID pParam)传入线程函数及其参数。
再Create线程:
g_Thread.CreateThread() //用默认参数,当然,也可以不用。
这样的就和使用:
CWinThread* g_pThread = AfxBeginThread(yourThreadProc,(LPVOID)(yourThreadProcParam));
一样了。
例子正好身边没有,在自己笔记本上~
.h 文件
#define WM_TEST WM_USER + 1class 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);
}
这是框架,楼主要是需要什么操作,自己定义、添加自己的线程消息就可以了。
IMPLEMENT_DYNCREATE(CTestThread, CWinThread)
请问4楼的,这两句是什么意思?
http://www.vckbase.com/document/finddoc.asp?keyword=%CF%DF%B3%CC
IMPLEMENT_DYNCREATE(CTestThread, CWinThread) 支持 类的动态创建 相当于 从类的名字 可以直接创建类 RUNTIMECLASS