• 使用PostThreadMessage (Using CWinThread) .


    .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);
          }
  • 相关阅读:
    开源框架/软件汇总
    如何查看Maven项目的jar包依赖
    我的前端技术栈(2018版)
    解决在Mac上用pyenv安装python3失败的问题
    学习jenv
    学习sbtenv
    解决MAC下修改系统文件没权限的问题
    学习Spring Boot
    学习音标
    C# 对List中的Object进行排序
  • 原文地址:https://www.cnblogs.com/lidabo/p/2814824.html
Copyright © 2020-2023  润新知