|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
×
- UINT func1(LPVOID pParam) //线程函数
- {
-
- BOOL b = ::InvalidateRect(hWnd, &rect, TRUE); //使客户区矩形区域的图形变得无效
- BOOL b1 = UpdateWindow(hWnd);//更新指定窗口的客户区
-
- int t = 1;//第一个点不能画直线
- short* g = (short*)pParam;
- for (int i = 0; i < zong / sizeof(short); i++) {
- if (t == 1) {
- //移到起始点
- ::MoveToEx(hdc, i, *(g+i), NULL);
- t = 0;
- }
- else {
- LineTo(hdc, i, *(g + i));//绘制直线
- }
-
- }
-
- return 0;
- }
- afx_msg LRESULT CMFCyinpinDlg::OnMM_WIM_DATA(WPARAM wParam, LPARAM lParam)
- {
- WAVEHDR* pWaveHdr = (WAVEHDR*)lParam;
- memcpy(g_samples, pWaveHdr->lpData, pWaveHdr->dwBytesRecorded);//复制音频数据
- zong = pWaveHdr->dwBytesRecorded;
- CWinThread* pp = AfxBeginThread(func1, (short*)(g_samples), 0, 0, 0, NULL);//创建工作线程
-
- waveInAddBuffer(hWaveIn, pWaveHdr, sizeof(WAVEHDR)); // 继续录制下一段音频数据
-
- return 0;
- }
复制代码
我的问题:在OnMM_WIM_DATA消息函数中获得麦克风音频 数据 后,创建线程绘出波形图
每次需要清除重新绘制,
可是BOOL b = ::InvalidateRect(hWnd, &rect, TRUE); //使客户区矩形区域的图形变得无效
BOOL b1 = UpdateWindow(hWnd);//更新指定窗口的客户区
这两条 指令无效,没有清除原图像 ??
|
|