开发大型GUI界面程序MFC当仁不让,但如果是开发图形应用程序,并不需要大规模界面控件,没有必要链接庞大的MFC库,直接使用platform sdk会很麻烦,这时ATL中的关于Windows的封装就是最好的选择 #include <atlbase.h> #include <atlwin.h> class CMyWindow : public CWindowImpl<CMyWindow, CWindow, CWinTraits<WS_OVERLAPPEDWINDOW, 0> > { public: DECLARE_WND_CLASS(_T("CMyWindow")) BEGIN_MSG_MAP(CMyWindow) MESSAGE_HANDLER(WM_PAINT, OnPaint) END_MSG_MAP() LRESULT OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL & bHandled) { PAINTSTRUCT ps; ::BeginPaint(m_hWnd, &ps); ::EndPaint(m_hWnd, &ps); bHandled = TRUE; return 0; } void OnFinalMessage(HWND hwnd) { ::PostQuitMessage(0); } }; int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { CMyWindow myWnd; myWnd.Create(NULL, CMyWindow::rcDefault, _T("Hello, world")); myWnd.ShowWindow(nCmdShow); myWnd.UpdateWindow(); MSG msg; msg.message = ~(UINT)WM_QUIT; while(msg.message != WM_QUIT) { if(::GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } } return (int)msg.wParam; }