可以讲一下CWnd吗?

wlzqi 2003-06-01 01:48:43
比如说:CWnd *p;
p=FindWindow(NULL,"xxx");
p->ShowWindow(SW_HIDE);
这样可以。

但是我在SPY++中看到的窗口句柄是16进制的数,而且不能CWnd *p=0x123;这样的赋值。请问窗口句柄究竟存的是什么?如果在SPY++中得到的16进制的句柄号,如何赋值个CWnd,或者说如何用在SPY++中得到的16进制的句柄号对窗口操作?万分感谢!
...全文
192 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunhz99 2003-06-01
  • 打赏
  • 举报
回复
学习的好机会
nuaawenlin 2003-06-01
  • 打赏
  • 举报
回复
up
syl08341 2003-06-01
  • 打赏
  • 举报
回复
楼上说的够详细
triggerd 2003-06-01
  • 打赏
  • 举报
回复
CWnd *p=0x123;类型不匹配怎能赋值?

p=FindWindow(NULL,"xxx");返回的是指向窗口的指针。
CWnd 中有句柄值,但还有别的成员,怎能用16进制的句柄号赋值给CWnd

句柄的存在是为了唯一标志窗口的,记录了在内存的存储位置,是CWnd中
标志窗口的成员m_hWnd.SPY++中得到的16进制的句柄号也就是当前窗口的
m_hWnd值.一般句柄只作为窗口函数的参数.

继续gz..
aoosang 2003-06-01
  • 打赏
  • 举报
回复
2.4 窗口类
窗口类包括边框窗口类、视图类、对话框类、控件类、控件栏类和属性簿类,这些类的共同之处是都封装了一个窗口句柄HWND,都是从CWnd派生的。

1、窗口支持类

CWnd类作为所有窗口类的公共基类,包含了大量的成员函数,为窗口类提供了基本操作,这些操作包括:

创建和初始化窗口;
操纵、查询窗口状态;
管理窗口的尽寸、位置、标题、光标、菜单、滚动;
对窗口的坐标进行换算;
管理对话框中的控件;
管理windows消息;
操纵剪切板和OLE控制。

CWnd类的消息响应机制将WndProc函数隐藏起来,windows消息通过消息响应表自动相应的响应函数,CWnd类提供了默认的消息响应函数,在CWnd的派生类重载默认的响应函数来指定当消息发送给窗口时执行我们指定的操作。

2、边框窗口类

当应用程序在windows环境下运行时,用户通过边框窗口与windows进行交互,边框窗口通常包含并管理其他窗口,如视图、工具栏或状态栏等。

CFrameWnd类是边框窗口类的基类,单文档接口(SDI)的边框窗口类直接从CFrameWnd类派生。创建边框窗口可先生成CFameWnd对象,然后直接调用成员函数Create或LoadFrame,也可以利用文档模板来创建边框窗口。

  

CMDIFrameWnd类和CMDIChileFrameWnd类都是从CFrameWnd类派生的,分别用于支持多文档接口(MDI)的主边框窗口和子窗口。一个MDI主边框窗口包含并一个客户边框窗口(MDIClient window),客户边框窗口负责MDI子窗口的激活、最大化、最小化、恢复和删除,我们可以通过公有数据成员m_hWndMDIClient获取客户边框窗口的句柄。当有子窗口激活时,自动将菜单转换为子窗口的菜单。

CSplitterWnd类提供了分割窗口的功能,即一个窗口包含很多个面板,这些面板一般都是视图对象,也可以是其他CWnd类或其派生对象。CSplitterWnd对象一般作为边框窗口CFrameWnd或CMDIChildWnd对象的一个数据成员来使用.CSplitterWnd类不是从CFrameWnd类派生的,而是直接从CWnd类派生。

  

  3、视图类

视图类管理着边框窗口的客户区,为用户与windows之间提供可视接口,用于显示文档的数据,并接收来自用户键盘或鼠标的输入,提供用户与应用程序的交互接口,还允许用户对数据预览和打印。视图一般通过文档模板与文档相关联。

  CView类是视图类的基类。通常的应用程序直接从CView类派生自已的视图类。其他的具有特殊功能的视图类是由CView类派生的如下视图提供。

  CScrollView类支持可滚动的视图,管理视图的尽寸和映射模式,自动响应滚动条和键盘的滚动消息。

  CCtrlView类及其派生类CEditView,CListView,CTreeView和CRichEditView,将文档--视图模型应用到windows95和windows nt 3.51以后版本所支持的通用控件上,使得在视图中使用控件CEdit,CList,CRichEdit的功能。

  CFormView类是CScrollView类的派生类,该类支持基于对话框资源的视图。CFormView类还派生了分别用于ODBC数据库、DAO数据库、数据库记录和WebBrowser控件的CRecordView类、CDaoRecordView类、COleDBRecordView类和CHtmlView类。

aoosang 2003-06-01
  • 打赏
  • 举报
回复
CWnd类是所有窗口类的基类,它允许用户建立一个窗口。下面我们就从CWnd类是
派生的一个子类CSplashWnd。CSplashWnd 窗口类似于进入VC++时那个开头画面。
编写窗口类一般先用ClassWizard从CWnd派生出自己的窗口类.我们这里派生出了
CSplashWnd类。 重载Create函数,建立一个窗口。 void CSplash :: Create
(CWnd *parentWnd) { BOOL bRet=CWnd::CreateEx(WM_EX_TOPMOST,AfxRegisterWndClass(0),0,WS_POPUP,x,y, Width,Height,parentWnd->GetSafeHwnd(),NULL,NULL); If (bRet) SetOwner(parentWnd); ShowWindow(SW_SHOW); }
Create函数首先调用CWnd 成员函数CreateEx登记并建立一个窗口,其中第一个参
数表示扩展窗口风格,WM_EX_TOPMOST 使本窗口位于其他窗口之上.接下来两个参
数分别是指WNDCLASS和WindowName的指针.前者是AfxRegisterWndClass(WNDCLASS
wc)登记窗口结构后返回的指针,后者则只是一个字符串指针,WS_POPUP设定窗口模
式为弹出式窗口,x,y设定了窗口左上角位置,width,height分别指定了窗口的宽度
和高度;下一个参数是一个指向父窗口句柄的指针,可用Cwnd类的GetSafeHwnd()
函数返回,最后两个参数用来设定窗口的菜单和鼠标,这里并不需要。 SetOwner函
数确定Splash窗口的父窗口。 ShowWindow(int nCmdShow)函数可通过参数
nCmdShow显示。 (SW_SHOW)或隐藏(SW_HIDE)一个窗口。 OK! 窗口建好了,下面还
需通过消息映射来控制窗口的行为,用ClassWizard也是很容易建立消息处理函数
的(具体做法可参考有关书籍)。 下面只是针对本窗口将一下窗口处理函数的编写
。 先用ClassWizard重载WM_CREATE消息处理函数: Void
CSplashWnd::OnCreate(LPCREATESTRUCT lpCreateStruct) { ....... Set
Timer(2,300,0); } 然后重载WM_TIMER消息处理函数。 Void
CSplashWnd::OnTimer(UINI nIDEvent) { if (nIDEvent==2) { Show
Window(SW_HIDE); Destroy Window); } 首先SetTimer函数设定过3000 ms 后发
送一个WM_TIMER消息。第一个函数设置的是事件ID号,然后在OnTimer函数里根据
事件ID号来判断到底是什么事件发送的消息.如果是2,就隐藏窗口并注销窗口。
弹出式窗口还需绘制窗口背景,重载OnPaint()函数就可以了。 void OnPaint() {
CPaintDC dc(this); CDC memdc; CBitmap bm; bm.LoadBitmap(IDB_SPLASH);
BITMAP mp; bm.SelectObject(sizeof(mp),&mp); memdc.CreateCompatible
DC(&dc); membc.SelectObject (&bm);
dc.BitBlt(0,0,mp.bmWidth,mp.bmHeight,&memdc,0,0,SRCCOPY); } 这里涉及到
很多GDI绘图函数,可参考有关书籍(图书馆有借)。 至此CSplashWnd类已经建
立,当需要使用Splash窗口时可用下列语句建立: Splash.Create(parentWnd);

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧