ATL如此显示窗口及对话框
来源:互联网 发布:wifidisplay软件下载 编辑:程序博客网 时间:2024/05/18 06:04
ATL编程真不好理解,摸索了两三天,总算搞清楚了窗口和对话框的显示。
其消息映射原理好象与MFC差不太多,只不过模版就用得多了:
#include "stdafx.h"
#include "resource.h"
#include <atlbase.h>
CComModule _Module;
#include <atlwin.h>
//////////////////////////////////////////////////
class CModeDialog : public CDialogImpl<CModeDialog>
{
public:
enum { IDD = IDD_DLG_SECOND};
BEGIN_MSG_MAP(CModeDialog)
MESSAGE_HANDLER(WM_INITDIALOG,OnInitDialog)
MESSAGE_HANDLER(WM_CLOSE,OnClose)
END_MSG_MAP()
LRESULT OnInitDialog(UINT,WPARAM,LPARAM,BOOL&)
{
return 0;
}
LRESULT OnClose(UINT,WPARAM,LPARAM,BOOL&)
{
DestroyWindow();
return 0;
}
};
//////////////////////////////////////////////////
class CMainWindow : public CWindowImpl<CMainWindow>
{
BEGIN_MSG_MAP(CMainWindow)
MESSAGE_HANDLER(WM_CREATE,OnCreate)
MESSAGE_HANDLER(WM_PAINT,OnPaint)
MESSAGE_HANDLER(WM_LBUTTONDOWN,OnLButtonDown)
MESSAGE_HANDLER(WM_RBUTTONDOWN,OnRButtonDown)
MESSAGE_HANDLER(WM_DESTROY,OnDestroy)
END_MSG_MAP()
LRESULT OnCreate(UINT,WPARAM,LPARAM,BOOL&)
{
return 0;
}
LRESULT OnLButtonDown(UINT,WPARAM,LPARAM,BOOL&)
{
//显示模态对话框
CSimpleDialog<IDD_DLG_FIRST> simdlg;
simdlg.DoModal();
return 0;
}
LRESULT OnRButtonDown(UINT,WPARAM,LPARAM,BOOL&)
{
//显示非模态对话框
CModeDialog *pDlg = new CModeDialog;
pDlg->Create(0);
pDlg->ShowWindow(SW_NORMAL);
return 0;
}
LRESULT OnPaint(UINT,WPARAM,LPARAM,BOOL&)
{
PAINTSTRUCT ps;
HDC hdc = GetDC();
BeginPaint(&ps);
RECT rc;
GetClientRect(&rc);
HBRUSH hbr = CreateSolidBrush(RGB(0,255,255));
HBRUSH oldHbr = (HBRUSH)SelectObject(hdc,hbr);
FillRect(hdc,&rc,hbr);
SelectObject(hdc,oldHbr);
DeleteObject(hbr);
EndPaint(&ps);
return 0;
}
LRESULT OnDestroy(UINT,WPARAM,LPARAM,BOOL&)
{
PostQuitMessage(0);
return 0;
}
};
////////////////////////////////////////////////
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
_Module.Init(0,hInstance);
//创建和显示窗口
CMainWindow window;
RECT rcpos = {0,0,300,300};
window.Create(NULL,
rcpos,
"Main Window",
WS_VISIBLE|WS_OVERLAPPEDWINDOW);
MSG msg;
while(GetMessage(&msg,0,0,0))
{
//消息循环
TranslateMessage(&msg);
DispatchMessage(&msg);
}
_Module.Term();
return 0;
}
- ATL如此显示窗口及对话框
- ATL中显示窗口
- Windows窗口及对话框
- 1.4 显示对话框窗口---Dialog
- ATL窗口
- ATL窗口
- ATL中的窗口类及常见的窗口处理情况
- 弹出式窗口及网页对话框
- 打开窗口及对话框脚本
- ExtJs之窗口及对话框
- 对话框及窗口背景色
- 利用Qt的标准文件对话框及OpenCV创建窗口并显示图片
- 显示消息提示对话框,关闭当前窗口,刷新父窗口
- ExtJS之对话框及窗口篇
- MFC学习--对话框及窗口背景色
- MFC学习--对话框及窗口背景色
- Win32汇编-----对话框及窗口编程范例
- MFC对话框及窗口函数调用顺序
- linux中for的用法
- 2008.05.31 Beijing Open Party见闻
- linux中for的用法
- linux中for的用法
- linux中for的用法
- ATL如此显示窗口及对话框
- linux中for的用法
- linux中for的用法
- 谈谈SS2中的角色(ROLE_)和权限(AUTH_)
- linux中for的用法
- asp.net连接SQL Server数据库的代码
- 分页器理解
- 持续集成备忘
- 管理信息系统