win32除了窗口函数,有没别的可以获取msg事件的函数?该如何处理

win32除了窗口函数,有没别的可以获取msg事件的函数?
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
  ...
}

上面是一个最基本的窗口函数
但是我不想让我的代码走这个函数(我只想将我的代码全部放到主循环中),而却只想得到他的msg事件,那有什么函数可以即时获取么?就像GetKeyState()一样?

PS:我在设计UI,其中使用到了IME输入法,这需要依赖win32的消息事件,但是我不愿意将我的代码放到窗口函数里,因为我觉得这样太丑陋了,但是我又需要win32这些消息,我不知道如何将这一调用过程设计的优雅些。

------解决方案--------------------
在你的while()循环中处理?
C/C++ code

while(GetMessage(&msg, NULL, 0, 0))
{
 switch(msg.message)
 {
  case ...:
  ...
   break;
  ...
  default:
   break;
 }
 TranslateMessage(&msg);
 DispatchMessage(&msg);
}

------解决方案--------------------
非队列消息只能在窗口过程得到,队列消息可以在消息循环得到
------解决方案--------------------
PS:我在设计UI,其中使用到了IME输入法,这需要依赖win32的消息事件,但是我不愿意将我的代码放到窗口函数里,因为我觉得这样太丑陋了,但是我又需要win32这些消息,我不知道如何将这一调用过程设计的优雅些。

你可以采用观察者模式建立联系