| 网站首页 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛 |
 
 
 
您现在的位置: 编程中国 >> 技术教程 >> 开发语言 >> VC++ >> VC技术资料 >> 正文
  ►  Win32 SDK封闭实例
Win32 SDK封闭实例
作者:未知    阅读人次:……    文章来源:未知    发布时间:2007-8-25    网友评论()条
 

 

LRESULT CALLBACK WndProc
 (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
 Controller * pCtrl = WinGetLong<Controller *> (hwnd);

 switch (message)
 {
 case WM_CREATE:
  // 不得不在此捕捉异外错误!
  try
  {
   pCtrl = new Controller (hwnd,
     reinterpret_cast<CREATESTRUCT *> (lParam));
   WinSetLong<Controller *> (hwnd, pCtrl);
  }
  catch (WinException e)
  {
   ::MessageBox (hwnd, e.GetMessage(), "Initialization",
    MB_ICONEXCLAMATION | MB_OK);
   return -1;
  }
  catch (...)
  {
   ::MessageBox (hwnd, "Unknown Error", "Initialization",
    MB_ICONEXCLAMATION | MB_OK);
   return -1;
  }
  return 0;
 case WM_SIZE:
  pCtrl->Size (LOWORD(lParam), HIWORD(lParam));
  return 0;
 case WM_PAINT:
  pCtrl->Paint ();
  return 0;
 case WM_COMMAND:
  pCtrl->Command (LOWORD (wParam));
  return 0;
 case WM_DESTROY:
  WinSetLong<Controller *> (hwnd, 0);
  delete pCtrl;
  return 0;
 }
 return ::DefWindowProc (hwnd, message, wParam, lParam);
}


--------------------------------------------------------------------------------
在这个简单的例子中执行了少许的控制器方法。构造函数为稍后的使用不得不记住窗口的句柄,析构函数不得不发送离开消息,Size方法传递它的参数到View,等等,我们将讨论关于描绘窗口。目前,注意到控制器准备与View去一起描绘。
--------------------------------------------------------------------------------

Controller::Controller (HWND hwnd, CREATESTRUCT * pCreate)
:_hwnd (hwnd),
 _model ("Generic")
{
}

Controller::~Controller ()
{
 ::PostQuitMessage(0);
}

void Controller::Size (int cx, int cy)
{
 _view.SetSize (cx, cy);
}

void Controller::Paint ()
{
 // prepare the canvas and let View do the rest
 PaintCanvas canvas (_hwnd);
 _view.Paint (canvas, _model);
 // Notice: The destructor of PaintCanvas called automatically!
}




--------------------------------------------------------------------------------
当用户选择了菜单条目之一时,产生WM_COMMAND消息窗口过程被调用。适当的控制方法当足于命命令id分配命令。当你利用你的资源编辑器建立了你的菜单时,你为每个菜单条目选取了这些标识id。它们被贮存在适当的头文件里(可能在resource.h里) ,不得不被包含到控制器的源文件中。
我们的菜单仅仅包含三个条目,它们的标识id为IDM_EXIT,IDM_HELP和IDM_ABOUT。响应IDM_ABOUT时对话框被显示,它也是利用资源编辑器建立的,给定的标识id为IDD_ABOUT。它的对话框过程是AboutDlgProc。

最后,为了显示一个对话框我们需指定应用程序实例的句柄。标准的途径是利用应用程序的hwnd访问内部窗口数据结构取回它。


--------------------------------------------------------------------------------

上一页  [1] [2] [3] [4] [5] [6] 下一页

 

 
文章录入:编辑01    责任编辑:编辑01 
  • 上一篇文章:

  • 下一篇文章:

  •  
    相关文章
    原创地带
    24小时热门帖子