MFC中在工作线程下画图(自定义消息的发送)
来源:互联网 发布:java socket 发送byte 编辑:程序博客网 时间:2024/05/16 04:38
有两种方法:
由于产生的线程函数只能为类中的static函数或全局函数(这里假设线程函数为view类的static成员函数),由于线程函数为static,因此不能
直接访问view类的非static成员函数,也就不能用CClientDC之类的成员函数绘图,如果用全局的GetDC,也会同样不能用常规的方法取得
hwnd,这时可用办法:
CMainFrame *p=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CView *pv = (CView *)p->GetActiveView();
来取得指向view类的指针,所有问题可以解决了
方法一:
用上面提到的方法直接在线程函数中绘图,示例代码
- //ThreadFunc为工作线程函数,其为view类的static成员函数
- UINT CMltiThrdView::ThreadFunc(LPVOID ThreadArg)
- {
- CMainFrame *p=(CMainFrame*)AfxGetApp()->m_pMainWnd;
- CView *pv = (CView *)p->GetActiveView();
- CClientDC dc(pv);
- dc.MoveTo(10,10);
- dc.LineTo(200, 200);
- return 0;
- }
方法二:
发送自定义消息:在工作线程中发送消息给view类,在view类的消息处理函数中画图
发送定义定消息的方法:
1、给自定义消息一个ID值:在WM_USER的基础加上一个整数,范围不能超过0X7FFFF
2、在view类的定义中,声明函数
3、添加消息映射
4、编写消息处理函数
示例代码:
- //view类的头文件中定义的消息ID
- #define UM_THREAD WM_USER+1
- //view类的定义中添加函数声明
- //{{AFX_MSG(CTestView)
- afx_msg void OnResume();
- //}}AFX_MSG
- afx_msg void DrawLine(); //添加的函数声明
- DECLARE_MESSAGE_MAP()
- //源文件中添加消息映射
- BEGIN_MESSAGE_MAP(CTestView, CView)
- //{{AFX_MSG_MAP(CTestView)
- ON_COMMAND(IDM_RESUME, OnResume)
- //}}AFX_MSG_MAP
- // Standard printing commands
- ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
- ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
- ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
- ON_MESSAGE(UM_THREAD, DrawLine) //添加的消息映射
- END_MESSAGE_MAP()
- //消息处理函数
- void CTestView::DrawLine()
- {
- CClientDC dc(this);
- dc.MoveTo(0, 0);
- dc.LineTo(20, 20);
- }
- //线程函数
- UINT CTestView::ThreadFunc(LPVOID ThreadArg)
- {
- CMainFrame * p = (CMainFrame *)AfxGetApp()->m_pMainWnd;
- CTestView * pv = (CTestView *)p->GetActiveView();
- pv->SendMessage(UM_THREAD);
- return 0;
- }
复制搜索
复制搜索
- MFC中在工作线程下画图(自定义消息的发送)
- MFC中在工作线程下画图(自定义消息的发送)
- 在MFC中从一个线程工作函数中向窗口发送消息(this指针的妙用)
- 在MFC中从一个线程工作函数中向窗口发送消息(this指针的妙用) .
- 在MFC中从一个线程工作函数中向窗口发送消息(this指针的妙用)
- 在MFC中从一个线程工作函数中向窗口发送消息(this指针的妙用) .
- 在MFC中实现自定义的消息发送
- MFC如何自定义消息与在线程中向主窗体控件发送数据
- 在MFC中从一个线程工作函数中向窗口发送消息以及窗口到窗口消息传送方法
- 在MFC中,发送并处理自定义消息
- 在MFC中使用自定义的消息
- MFC 线程中发送最小化消息失败
- MFC - 发送自定义消息
- 不知道在MFC中如何从线程工作函数中向窗口发送消息?用好一个指针就够了
- 在创建的线程中发送命令响应消息
- asmack在openfire中发送自定义属性、节点的消息
- 工作线程调用sendmessage()向主对话框发送自定义消息遇到的问题以及解决
- 在MFC对话框下自定义消息!!
- 夫学须静也freeeim
- MyEclipse的自动提示功能哪里去了??
- 驱动习题
- layoutSubviews总结
- 高难度谈话(全文)
- MFC中在工作线程下画图(自定义消息的发送)
- 我们都笑了freeeim
- 怎样在VC中用代码操作SQL(1)?---注册帐号,修改密码,登录3个功能
- 开源历史上的九大事件&八大软件
- RCP中适配器扩展点
- Linux知识点
- 瑞利(Rayleigh)商定义及其求特征值法
- android 脚本添加
- 第8章 矩阵特征值问题计算