zoukankan      html  css  js  c++  java
  • 认识ATL窗口

    ATL学习之一----认识ATL窗口

    这是一个相当于“Hello world!”的任务,作为认识ATL,考查了其运作流程与机制。

     

    环境:VS2008

    创建:新建-项目-Win32项目-添加公用头文件用于(选择ATL)。

    PS:注意新建项目取消预编译头与设置自增链接为默认

    需要用到的头文件:

    ,,

    OK,下面进行程序设计:(非完整代码,主要便于认识)

    Main函数:

    int APIENTRY _tWinMain(HINSTANCE hInstance,  
       HINSTANCE hPrevInstance,  
       LPTSTR lpCmdLine,  
       int nCmdShow)  
    {  
    CMyWindow myWnd;  
    myWnd.Create(NULL, CMyWindow::rcDefault, _T(CC_WINDOW_TITLE)); 
    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);  
    }  
    }  

    //PS:不多说,注意_tWinMain入口,这是unicode编码入口函数,详情看宏定义

    //窗口类定义

    这里我使用的是CwindowImpl

    类继承,e.g :

    class CMyWindow:public CWindowImpl

    //即继承自CWindowImpl,后面为自身属性,亦可以多一个CWinTraits

    ATL使用消息映射机制:

    public:

    //先声明我的类名

    DECLARE_WND_CLASS(_T("CMyWindow"))  //名字并非一定得是类名,任意可区分即可

    //消息映射列表

    BEGIN_MSG_MAP(CMyWindow)

    MESSAGE_HANDLER(WM_PAINT,OnPaint)

    //OnPaint为函数名,如此定义意味着你必须定一个OnPaint函数去响应WM_PAINT消息

    END_MSG_MAP()

    //PS:消息响应分为三种:NOTIFY_HANDLER,COMMAND_HANDLER,MESSAGE_HANDLER

    //实现OnPaint消息

    LRESULT OnPaint(UINT nInt, WPATAM wParam,LPARAM lParam,BOOL &bHandled);

    具体自己可以实际操作一下,很方便。

  • 相关阅读:
    java实现第六届蓝桥杯格子中输出
    java实现第六届蓝桥杯格子中输出
    java实现第六届蓝桥杯循环节长度
    java实现第六届蓝桥杯循环节长度
    java实现第六届蓝桥杯格子中输出
    java实现第六届蓝桥杯格子中输出
    java实现第六届蓝桥杯循环节长度
    java实现第六届蓝桥杯循环节长度
    java实现第六届蓝桥杯加法变乘法
    深入研究java.lang.ThreadLocal类 (转)
  • 原文地址:https://www.cnblogs.com/hermit/p/3492487.html
Copyright © 2011-2022 走看看