多个非模态对话框的消息处理

我在用C调用windows API写程序的时候,遇到一些问题。程序需要同时显示多个非模态对话框,可是,这个时候消息处理就出现了问题。第二个被创建的对话框总是接收不到消息。另外,这几个对话框是相互重叠的,第二个位于顶层,但是在显示的时候第一个的一个本来应该被覆盖的按钮总是显示出来。
附上主函数消息循环的代码:

enter code here
while(GetMessage(&msg, hwnd, 0, 0))
{
    //分发窗口消息
    if((hDialogType == 0 || !IsDialogMessage(hDialogType, &msg))
        && (hDialogDetails == 0 || !IsDialogMessage(hDialogDetails, &msg)) 
        && (hDialogDonations == 0 || !IsDialogMessage(hDialogDonations, &msg)))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
}
return msg.wParam;