请教一下,MFC中的控件是怎么实现的呢?一个按钮就是一个窗口?还是所有按钮画在一个分层窗口上再叠在主窗口上?还是直接在主窗口上画图?

天依咋又胖了 2019-03-04 09:22:31
请教一下MFC中的控件是怎么实现的呢(通过调用什么样的API,传递什么参数)?一个按钮就是一个窗口?还是所有按钮画在一个分层窗口上再叠在主窗口上?还是直接在主窗口上画图?
...全文
210 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
秘境之眼 2019-03-12
  • 打赏
  • 举报
回复
在窗口编程中,控件是可以直接拖到主窗口上的,然后实现其函数就行了,控件有许多,比如列表控件,树形控件,编辑框,单选按钮,下拉框等等,对于对话框,可以创建一盒对话框类,上诉这些功能,在window SDK编程中,都要一个一个区写实现代码,但是这对理解MFC有很大的帮助
schlafenhamster 2019-03-06
  • 打赏
  • 举报
回复
一般 控件 都是 窗口 (hWnd), 无窗口的 叫 wndless, 是 直接绘制到 屏幕上的 。(DirectDraw)
PZ_eng 2019-03-06
  • 打赏
  • 举报
回复
有点没看懂你说的什么意思,一般控件的父类不都是CWnd吗?
marslycan 2019-03-06
  • 打赏
  • 举报
回复
WS_CHILD等参数参数以及父窗口决定的把 等大神来一波深入解析
天依咋又胖了 2019-03-06
  • 打赏
  • 举报
回复
引用 4 楼 schlafenhamster 的回复:
一般 控件 都是 窗口 (hWnd), 无窗口的 叫 wndless, 是 直接绘制到 屏幕上的 。(DirectDraw)
言简意赅
天依咋又胖了 2019-03-06
  • 打赏
  • 举报
回复
引用 5 楼 smwhotjay 的回复:
控件就是控件,了解下win32 sdk编程 就知道了
好的,我看了一下Win32编程,上面说botton控件就是一个子窗口,在User32.dll加载时就已经注册好这个窗口类了,所以只要用“button”这个类名创建窗口就行了,当该窗口被点击时会向父窗口发送WM_COMMAND消息,其中LOWORD(wParam)指定了该子窗口(控件)的ID,lParam指定了该子窗口的句柄,而其上显示的文字其实是它的“标题” 应该就是这样:
::CreateWindowEx(
    0,                                                   //拓展样式:无
    "button",                                                     //窗口类:button
    "Start",                                                    //按钮显示文字:Start
    WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,     //WS是窗口样式,BS是按钮样式
    50,                                                    //窗口(按钮)的位置和尺寸
    50,
    80,
    30,
    hwnd,                                                   //父窗口句柄
    (HMENU)IDC_BUTTON,                                                   //系统菜单
    hInstance,                                                    //程序实例句柄
    NULL);
感谢这位前辈提供线索
smwhotjay 2019-03-06
  • 打赏
  • 举报
回复
控件就是控件,了解下win32 sdk编程 就知道了
天依咋又胖了 2019-03-04
  • 打赏
  • 举报
回复
我想到的是:
HWND hwndButtonWindow = ::CreateWindowEx(
		WS_EX_TRANSPARENT,		//拓展样式-穿透,使其上的点击等消息发送至其后的主窗口
		wndclass.lpszClassName,	//使用的窗口类名称
		L"button",				//窗口标题
		WS_POPUP | WS_CHILD,		//样式-弹出窗口(无标题栏)
		400,						//x,该位置在主窗口上
		430,						//y
		50,						//w,按钮的宽
		30,						//h,按钮的高
		hwnd,					//父窗口句柄
		NULL,					//菜单
		hInstance,				//程序实例句柄
		NULL);					//用户数据
然后设置它随主窗口(hwnd)一起移动

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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