MFC只是封装了API 可以参考下使用WIN32 API编写窗口实例程序。 http://blog.csdn.net/bluesky_03/article/details/3423738 里面有消息传递的用法
追问
这种也是基于窗口的情况下,那么基于控制台的情况下呢,
回答
比如 #include <windows.h> extern "C" { WINBASEAPI HWND WINAPI GetConsoleWindow(); } void main(void) { HWND hWnd = GetConsoleWindow(); PostMessage(hWnd, WM_CLOSE, NULL, NULL); } 即可向控制台发送关闭消息
追问
呵呵呵,这个我明白的,我的意思是,在不基于窗体的情况下,能否自定义消息,
回答
可以 #include "stdio.h" #include "stdlib.h" #include <windows.h> #define WM_MYMSG WM_USER+100 extern "C" { WINBASEAPI HWND WINAPI GetConsoleWindow(); } DWORD WINAPI func2(LPVOID LpParameter) { DWORD id = *(int*)LpParameter; while(1) { PostThreadMessage(id, WM_MYMSG, 0, 0); Sleep(1000); } return 0; } DWORD WINAPI func1(LPVOID LpParameter) { MSG msg; HWND hwnd = GetConsoleWindow(); while(1) { GetMessage(&msg, NULL, 0, 0); if (msg.message == WM_MYMSG) { printf("Recv WM_MYMSG\n"); } Sleep(1000); } return 0; } void main(void) { DWORD id; HANDLE hthrd1 = CreateThread(NULL, 0, func1, NULL, 0, &id); HANDLE hthrd2 = CreateThread(NULL, 0, func2, &id, 0, 0); while(1) { Sleep(1000); } } 运行后控制台不停打印 Recv WM_MYMSG Recv WM_MYMSG Recv WM_MYMSG Recv WM_MYMSG