多线程通信,发消息出现有关问题

多线程通信,发消息出现问题
//自定义消息
#define WM_USER_MSG WM_USER + 101;
//线程函数声明
UINT ThreadFunc(LPVOID lpParam); 

afx_msg void OnUserMsg(WPARAM wParam,LPARAM lParam);
DECLARE_MESSAGE_MAP()
//多线程
HANDLE hThread;
    DWORD ThreadID;

.cpp中
BEGIN_MESSAGE_MAP(CNiDAQtestDlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1, &CNiDAQtestDlg::OnBnClickedButton1)
ON_BN_CLICKED(IDC_BUTTON2, &CNiDAQtestDlg::OnBnClickedButton2)
ON_BN_CLICKED(IDC_BUTTON3, &CNiDAQtestDlg::OnBnClickedButton3)
ON_MESSAGE(WM_USER_MSG,OnUserMsg)(错误1)
END_MESSAGE_MAP(错误1)

UINT ThreadFunc(LPVOID lpParam)
{
CDAQClass Daq;
Daq.CreateTask();                         //创建任务
Daq.CreateCICountEdgesChan();             //创建计数通道
Daq.StartTask(); 
while(signST)
{
Daq.ReadCounterScalarU32();
cnum = Daq.GetCountNum();
::PostMessage((HWND)lpParam,WM_USER_MSG,0,0);(错误2)
}
return 0;
}


错误1:
>e:\working\nidaqtest\nidaqtest\nidaqtestdlg.cpp(84): error C2143: 语法错误 : 缺少“}”(在“;”的前面)
1>e:\working\nidaqtest\nidaqtest\nidaqtestdlg.cpp(84): error C2143: 语法错误 : 缺少“}”(在“;”的前面)
1>e:\working\nidaqtest\nidaqtest\nidaqtestdlg.cpp(84): error C2143: 语法错误 : 缺少“;”(在“,”的前面)
1>e:\working\nidaqtest\nidaqtest\nidaqtestdlg.cpp(84): error C2059: 语法错误:“,”
1>e:\working\nidaqtest\nidaqtest\nidaqtestdlg.cpp(85): error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>e:\working\nidaqtest\nidaqtest\nidaqtestdlg.cpp(85): error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>e:\working\nidaqtest\nidaqtest\nidaqtestdlg.cpp(85): error C2059: 语法错误:“}”
1>e:\working\nidaqtest\nidaqtest\nidaqtestdlg.cpp(85): error C2653: “TheBaseClass”: 不是类或命名空间名称
1>e:\working\nidaqtest\nidaqtest\nidaqtestdlg.cpp(85): error C2065: “GetThisMessageMap”: 未声明的标识符
1>e:\working\nidaqtest\nidaqtest\nidaqtestdlg.cpp(85): error C2065: “_messageEntries”: 未声明的标识符
1>e:\working\nidaqtest\nidaqtest\nidaqtestdlg.cpp(85): error C2059: 语法错误:“return”
1>e:\working\nidaqtest\nidaqtest\nidaqtestdlg.cpp(85): error C2059: 语法错误:“}”
错误2:
1>e:\working\nidaqtest\nidaqtest\nidaqtestdlg.cpp(25): error C2143: 语法错误 : 缺少“)”(在“;”的前面)
1>e:\working\nidaqtest\nidaqtest\nidaqtestdlg.cpp(25): error C2660: “PostMessageW”: 函数不接受 2 个参数
1>e:\working\nidaqtest\nidaqtest\nidaqtestdlg.cpp(25): error C2143: 语法错误 : 缺少“;”(在“,”的前面)
1>e:\working\nidaqtest\nidaqtest\nidaqtestdlg.cpp(25): error C2059: 语法错误:“)”

------解决方案--------------------
#define WM_USER_MSG WM_USER + 101;

后面的分号去掉
------解决方案--------------------
#define WM_USER_MSG WM_USER + 101

------解决方案--------------------
一个分号引发无数问题,常见