随笔分类 - MFC学习笔记
摘要:窗口的定制有两种:窗口创建前和创建后创建前定制是在PreCreateWindow()函数体内利用系统传过来的CREATESTRUCT对象的成员变量来改变窗口的各属性。修改窗口的光标、图标、背景:由于这些内容都是窗口类的设计和注册在MFC底层代码自动完成的。我们也可以编写自己的窗口类并注册然后让随后的窗口按照我们编写的窗口类去创建。在PreCreateWindow()函数体内自定义一个WNDCLASS类型的对象变量,并一一给各属性赋值。然后让窗口按照我们定义的窗口类型去生产(改变CREATESTRUCT对象的lpszClass属性为我们自定义类型的名字)创建后更改是在OnCreate函数内利用S
阅读全文
摘要:属性表单CPropertySheet其实就是常见的下一步下一步那种操作对话框,每个属性表单是由多个属性页CPropertyPage组成的
阅读全文
摘要:MFC里面的控件消息监听对事件的处理。 如果一个个的对每一个控件一一添加消息不免显得太麻烦,特别是对于同一类控件的处理的时候,如果这么做显得更加麻烦。联想到Java里面的可以自定义监听器然后让每个相同控件去监听就可以了。其实在MFC里面也可以这么做,不过过程相对麻烦,原理大致差不多。 首先添加一个自定义类(必须继承与相对应的控件类),然后将添加的控件利用wizard产生一个与自定义类相关联的变量。这样就产生了控件与自定义类相关联。然后在自定义类里面添加windows消息处理函数。 这样就实现了与JAVA自定义事件类相类似的消息处理方式。
阅读全文
摘要:对话框:在MFC中对资源的操作都是通过一个与资源相关的类来完成的(在VC中用view –classwizard完成类与资源的绑定)对话框的创建:1.模态对话框(打开后不可以进行改程序的其他输入操作)void CMainFrame::OnDialog(){ // TODO: Add your command handler code hereMyDialog dlg=new MyDialog();//这两种C++对象生成方式好像是一样的//MyDialog dlg;dlg.DoModal();}2.非模态对话框(打开后能进行改程序的其他输入操作)这个主要是因为对话框打开后程序并没有向上述对话框一
阅读全文
摘要:C……app类和C……doc类都不是从cwnd类派生的,不能使用直接使用messagebox(),可以使用全局的MessageBox()或者用应用程序框架的函数AfxMessageBox()响应菜单项命令的顺序依次是:视图类、文档类、框架类、应用程序类Windows消息分类:标准消息:除WM_COMMAND之外所有以WM_开头的消息都是标准消息,从Cwnd派生的类都可以接受这类消息命令消息:来自菜单、加速键、工具栏按钮的消息。这类消息都以WM_COMMAND形式呈现,在MFC中通过菜单项的标识ID来区分不同的命令消息通告消息:由控件产生的消息如按钮、列表框选择等产生这类消息,这类消息也是以WM
阅读全文
摘要:MFC文本编程,首先必须创建一个插入符(即窗口中闪动的光标),如下:int CMyTextView::OnCreate(LPCREATESTRUCT lpCreateStruct){ if (CView::OnCreate(lpCreateStruct) == -1) return -1; // TODO: Add your specialized creation code here CClientDC dc(this); //获取文本度量 TEXTMETRIC textInfo; dc.GetTextMetrics(&textInfo); //创建插入符 CreateSolidCa
阅读全文
摘要:MFC中作图主要有两种方式:其一,直接调用API,如下:void CDrawView::OnLButtonDown(UINT nFlags, CPoint point){ // TODO: Add your message handler code here and/or call default// this->MessageBox("鼠标左键被按下了。"); m_ptOrigin=point; CView::OnLButtonDown(nFlags, point);}void CDrawView::OnLButtonUp(UINT nFlags, CPoint p
阅读全文
摘要:在一个完整的MFC框架的程序中主要有以下及各类(其实都是winmain函数的变化过来的),其作用如下:c……App类: 主要完成对类的设计和注册,其中设计均是MFC框架已经设计好了的,只需对不同的类型进行注册,显示和更新、是整个MFC程序的入口一个程序只能有一个对象。消息循环C……Frame类: 主要完成对窗口类的产生、创建C……View类和C……Frame类: 都是窗口类都是表示,其中C……Frame类是C……View类的父窗口,View类在Frame上进行覆盖,界面的展现布局都在这两个类中。且注意MFC是基于消息的,所以添加控件的地方都该是在消息的内部进行添加(添加的方法:在类上右击鼠标,
阅读全文
摘要:几年以前,Charles Simonyi(他后来成为微软的著名程序员)设计了一种以前缀为基础的命名方法,这种方法后来称为"匈牙利表示法"以记念他.他的思想是根据每个标识符所代表的含义给它一个前缀.微软后来采用了这个思想,给每个标识符一个前缀以说明它的数据类型.因此,整型变量的前缀是n,长整型变量是nl,字符型数组变量是ca,以及字符串(以空类型结尾的字符数组)以sz为前缀.这些名字可能会非常古怪.比如说:lpszFoo表示"Foo"是一个指向以空字符为结尾的字符串的长整型指针.这种方法的优点是使人能够通过变量的名字来辨别变量的类型,而不比去查找它的定义.
阅读全文
摘要:Windows操作系统的所封装的消息格式:typedef struct tagMSG { HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt;} MSG, *PMSG;注释:hwndHandle to the window whose window procedure receives the message.messageSpecifies the message identifier. Applications can only use the low word; the high word
阅读全文
浙公网安备 33010602011771号