VC++ win32 application里如何建一个子窗口
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VC++ win32 application里如何建一个子窗口相关的知识,希望对你有一定的参考价值。
从WINDOWS系统的窗口机制上来说需要至少三步:1、注册窗口类
2、利用CreateWindow/CreateWindowEx() API 创建窗口
3、实现窗口类中的定义的消息事件的回调函数。
如果是创建已经注册好的窗口(比如系统提供的一些窗口类型,编辑框、树形列表等)无须注册窗口类,直接通过CreateWindowEx() 进行创建,也无须处理窗口的事件消息。 如果需要自己处理这些消息,那么就是所谓的子类化或超类化的技术概念了。
如果是实现对话框,则比较简单。 对话框是一个特殊的窗口类型,需要现在资源中定义一个对话框模板,然后通过DialogBoxParam/DialogBoxIndirectParam()等API直接创建就可以了。
从实现上来说:
1、SDK 编程, 那么需要按需求手动编码,依据需要处理这几个步骤
2、基于ATL框架, 直接创建一个基于CWindowImpl<> 模板类,继承实现一个类实例来处理消息链。 然后在需要的地方直接创建一个类实例,调用类实例的Create() 方法就成。
3、基于MFC框架,直接创建一个基于CWnd/CDialog类,继承实现类实例,来处理消息链。原理同ATL类似,无非是实现方式不大一样。
基于ATL/MFC框架都可以通过VS的向导进行创建,原理是一样的,无非就是省却大部分手动敲码的过程。 参考技术A CreateWindow可以创建主窗口之外的窗口,具体的函数调用见MSDN的示例程序。。
窗口分主窗口和子窗口。我觉得你是想学Win32编程。
所以推荐个专门讨论MFC/Win32的QQ群给你:139892312。
群规严格,不是真心想学就不要加了。本回答被提问者采纳 参考技术B CreateWindow这个函数就行了,详细的使用方法百度一下或者看MSDN上都有。
vc6.0如何使用getwindowtext函数获取edit控件中的文本内容
用createwindow创建了窗体和一个button和一个edit控件,可是如何在单击button时,将edit控件里的文本内容用textout函数打印在窗体上呢?
getwindowtext函数怎么用?如何得到edit空间里的内容?得到后存放在哪里?
还有如何在WM_COMMAND里判断单击的是哪一个控件,如果是button才起作用。
最好有可用的代码,谢谢列位了!
能解决问题的回答追加分数。
不是mfc啊,是win32应用程序,用winapi的。
CWnd::GetWindowText(CString& rString)
CWnd::GetWindowText(LPTSTR lpszStringBuf, int nMaxCount)
三种形式,使用得最简单和频繁的应该就是第二种了吧(个人而言)
使用实例:
CEdit my_edit;
CString string;
my_edit.GetWindowText(string);
就得到了编辑框中的字符串
在WM_COMMAND中可以将消息,函数及控件ID联系起来,可以利用编辑框的EN_SETFOCUS消息来达到你想要的结果。
例如:
头文件中添加:
afx_msg void OnSetfocusEdit1(); //添加
应用文件中添加消息影射:
ON_EN_SETFOCUS(IDC_EDIT1, OnSetfocusEdit1)追问
你说的是mfc吗?
追答不是 MFC可以通过ClassWizard自动添加 我说的是单文档等非MFC程序,可以通过手动添加实现相同的效果
参考技术A 看到你的问题我感到有点纠结,没弄明白什么叫“修改状态”。GetDlgItem (IDC_EDIT1)->SetFocus();//这里可以使编辑框变成可输入状态,但用的地方一定要用对,放在OnInitDialog()中就不行。
你要的修改状态是不是这样子的:比如说你原来的框里有字符abc,修改状态也就是编辑框变成可输入状态,而且abc是选定的(颜色变蓝色),如果你输入字符,abc就会被替换成你输入的字符。
CString str="abc";
CEdit *p=(CEdit*)GetDlgItem(IDC_EDIT1);
p->SetFocus();
p->SetWindowText(str);
p->SetSel(0,-1);
当然,换成p->SetSel(str.GetLength(),-1);abc不会被选定,输入光标在abc的最后。
不知道你是不是这个意思。本回答被提问者和网友采纳
以上是关于VC++ win32 application里如何建一个子窗口的主要内容,如果未能解决你的问题,请参考以下文章
vc新建工程Win32 Application和Win32 Console Application区别
vc新建工程Win32 Application和Win32 Console Application区别
vc++ 6.0里面的win32 console application是啥意思