认识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);
具体自己可以实际操作一下,很方便。
认识ATL窗口的更多相关文章
- ATL窗口
标准的Windows应用程序框架: /*------------------------------------------------------------ HELLOWIN.C -- Displ ...
- ATL封装IE内核启示:使用Win32/ATL建立窗口
开发大型GUI界面程序MFC当仁不让,但如果是开发图形应用程序,并不需要大规模界面控件,没有必要链接庞大的MFC库,直接使用platform sdk会很麻烦,这时ATL中的关于Windows的封装就是 ...
- 使用Win32/ATL建立窗口的过程
有时候想写个几十kb的小程序,MFC实在是太大了,Win32有时又太麻烦,怎么办呢?用ATL写会更方便和轻量级一些 ATL和MFC不同的是,ATL并没有强制性封装WinMain函数,仅封装了WndPr ...
- 关于Windows窗口框架
我们知道Windows的窗口消息处理函数是C方式, 面向过程的, 所以窗口框架的基本任务就是将它转成面向对象的方式, 确切的说如何将消息处理函数第一参数HWND转成对象指针. 关于这个问题, 其实网上 ...
- STL,ATL,WTL之间的联系和区别
STL即 Standard Template Library (标准模板库) STL是惠普实验室开发的一系列软件的统称.它是由Alexander Stepanov.Meng Lee和David R M ...
- STL,ATL,WTL的联系与区别
STL 即 Standard Template Library STL(标准模板库)是惠普实验室开发的一系列软件的统称.它是由Alexander Stepanov. ...
- ATL的GUI程序设计(4)
第四章 对话框和控件 对于Win32 GUI的程序设计来说,其实大部分的情况下我们都不需要自己进行窗口类的设计,而是可以使用Win32中与用户交互的标准方式--对话框(Dialog Box).我们可以 ...
- ATL的GUI程序设计(3)
第三章 ATL的窗口类 CWindowImpl.CWindow.CWinTraits,ATL窗口类的奥秘尽在此三者之中.在本章里,李马将为你详细解说它们的使用方法.另外,本章的内容也可以算是本书的核心 ...
- HOOK自绘原理 good
做“HOOK文件打开/保存对话框”的过程中,我首先研究了界面库的相关知识.界面库一般都是由C/C++这种中低级语言编码,这是因为在Windows下的界面库实现技术大都以直接操作控制Windows的消息 ...
随机推荐
- WebConfig节点详解
<!-- Web.config配置文件详解(新手必看) 花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法. 很适合新手参看,由于Web.config在使用很灵活,可 ...
- AngularJs 键盘事件和鼠标事件
ngKeydown/ngKeypress/ngKeyup 该指令在按键按下/按键按下/按键松开时执行指定表达式. ngKeydown和ngKeypress略有不同,目前的测试是ngKeypress针对 ...
- POJ 1659 Frogs' Neighborhood(Havel-Hakimi定理)
题目链接: 传送门 Frogs' Neighborhood Time Limit: 5000MS Memory Limit: 10000K Description 未名湖附近共有N个大小湖泊L ...
- hibernate-HQL连接查询
和SQL查询一样,HQL也支持各种各样的连接查询, 如内连接.外连接. 实例: package Test; import static org.junit.Assert.*; import java. ...
- VC++ 比较两个字符串是否相等,字母大小写相关。
1.strcmp 这是用于ANSI标准字符串的函数(如string和char *),此函数接受两个字符串缓冲区做为参数,如果两个字符串是相同的则返回零.否则若第一个传入的字符串的值大于第二个字符串返回 ...
- 【Alpha版本】冲刺-Day3
队伍:606notconnected 会议时间:11月11日 会议总结 张斯巍(433) 今天安排:个人信息界面设计 完成度:100% 明天计划:个人信息界面设计 遇到的问题:ps掌握的还不够熟练,导 ...
- DNS(二)之bind的视图功能
bind视图工作原理 在我国目前的网络环境下面,多个运营商并存,运营商之间的存在一定的网络互通问题,如果把来自不同的运营商或者地域的所有用户通过简单的A记录分配到一个机房,那么就存在部分网民访问延时大 ...
- spring---aop 配置
第一种:注解配置AOP 注解配置AOP(使用 AspectJ 类库实现的),大致分为三步: 1. 使用注解@Aspect来定义一个切面,在切面中定义切入点(@Pointcut),通知类型(@Befor ...
- dotnetbar入门
1.下载dotnetbar组件 2.工具箱引用 3.项目引用 4.开始工作 //此处Form完整的名称是System.Windows.Forms.Form,表示FrmMain窗体类是继承于System ...
- oracle表字段为汉字,依据拼音排序
在order by后面使用NLSSORT函数转化汉字列,如下 select * from student order by NLSSORT(name,'NLS_SORT=SCHINESE_PINYIN ...