DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

随笔分类 -  VC/MFC

上一页 1 ··· 24 25 26 27 28 29 30 下一页

摘要:VC/MFC如何设置对话框背景颜色2007-06-19 19:571.重载OnCtlColor (CDC* pDC, CWnd* pWnd, UINT nCtlColor),即WM_CTLCOLOR消息。 ---- ①在CExampleDlgDlg的头文件中,添加一CBrush的成员变量: class CExampleDlgDlg : public CDialog {... protected: CBrush m_brush; ... }; ---- ②在OnInitDialog()函数中添加如下代码: BOOL CExampleDlgDlg::OnInitDialog() { ... //. 阅读全文
posted @ 2012-08-02 16:19 DoubleLi 阅读(510) 评论(0) 推荐(0) 编辑

摘要:先看图: 窗体扩充过程中:窗体完全显示:要想实现动画窗体显示,需要把MoveWindow函数和定时器结合使用,MoveWindow函数可以改变指定窗口的位置和大小,结合定时器以后可以在一定时间内动态改变窗口的位置和尺寸。MoveWindow函数的原型如下: 函数原型:BOOL MoveWindow( HWND hWnd, int X, int Y, int nWidth, int nHeight, BOOL bRepaint ); 参数 hWnd指定了窗口的句柄 x指定了CWnd的左边的新位置。 y指定了CWnd的顶部的新位置。 nWidth指定了CWnd的新宽度。 n... 阅读全文
posted @ 2012-08-02 16:10 DoubleLi 阅读(2090) 评论(0) 推荐(0) 编辑

摘要:说起来挺简单的,一个对话框关闭时要依次调用该类的DestroyWindow-OnDestroy-PostNcDestroy,根据关闭的方法不同,在这些函数之前会调用OnOK、OnCancle或者OnClose。 这里要说的是,模态对话框的消息循环要到调用了PostNcDestroy之后才真正的结束,即ContinueModal循环在这里才结束,然后类的析构函数将被调用,这个对话框才真正的被销毁了。 如果一个模态对话框还有一个模态的子对话框,那就更要注意了。如果子对话框还在显示的时候,父对话框由于某种原因关闭了(如从其他线程接收到了WM_CLOSE消息),父对话框在执行完OnClose函数后会. 阅读全文
posted @ 2012-08-02 15:39 DoubleLi 阅读(14661) 评论(0) 推荐(0) 编辑

摘要:1、两者均可使用VS IDE中AppWizard来建立框架,前者使用“MFC ActiveX Control Wizard”,后者使用“ATL COM AppWizard”。2、用MFC建立的ActiveX控件的扩展名缺省为“.ocx”;用ATL(活动模板库)建立的扩展名缺省为“.dll”。3、用MFC建立ActiveX控件要简单得多,原因是MFC省去聊很多低级的COM概念,且控件设计中可使用多种MFC类,如CString、 CWnd 、CDC等;用ATL建立ActiveX控件则复杂些,且只能使用Windows SDK(Win API)函数。4、MFC ActiveX控件文件要比ATL的小,但 阅读全文
posted @ 2012-07-30 16:35 DoubleLi 阅读(2829) 评论(0) 推荐(0) 编辑

摘要:1. 新建一个MFC工程, 取名MyTab, 选择Dialog based, 然后Finish. 2. 删除对话框上默认添加的三个控件. 添加Tab Control控件并在Property属性中设置ID为IDC_TABTEST 在More Styles里勾上Bottom. 调速尺寸使其布满整个对话框, 我这边Tab Control的尺寸最后为164X203. 在ClassWizard为其添加变量, 变量名为m_tab. 类型为CTabCtrl. 3. 在对话框的初始化函数OnInitDialog里面添加如下代码: m_tab.InsertItem(0,"参数一"); //添 阅读全文
posted @ 2012-07-25 15:33 DoubleLi 阅读(933) 评论(0) 推荐(0) 编辑

摘要:基于 TCP 的 socket 编程/*服务器端程序流程:1.加载套接字库 WSAStartup2.创建套接字 socket3.将我们创建的套接字,绑定到本机地址的某一端口上 bind4.为套接字设置监听模式,准备客户请求 listen5.等待客户请求到来。当请求到来,将接受连接请求,并返回一个新的对应于此次连接的套接字 accept6.用新返回的套接字和客户端进行通信 send / recv7.在通信结束后,关闭套接字 closesocket客户端程序流程:1.加载套接字库 WSAStartup2.创建套接字 socket3.向服务器发出请求连接 connect4.和服务器进行通信 ... 阅读全文
posted @ 2012-07-19 09:58 DoubleLi 阅读(2456) 评论(0) 推荐(1) 编辑

摘要:菜单结构一个菜单栏可以有若干个子菜单,而一个子菜单又可有若干个菜单项。对于菜单栏的子菜单,由左至右从0开始索引。对于特定的子菜单的菜单项,由上至下建立从0开始的索引。访问子菜单和菜单项,均可通过其索引或标识进行。对于在窗口客户区右键弹出的菜单,如果弹出菜单归属View 类窗口,则菜单项只能响应View 和Doc 类消息点击。如果弹出菜单归属框架窗口,弹出菜单上的消息的路由遵循View -DOC-MainFrame-APP的响应顺序 。菜单的相关重要函数CMenu* GetMenu( ) ; // 得到菜单指针CMenu* GetSubMenu( ) ;// 得到子菜单指针,也就是弹出菜单指.. 阅读全文
posted @ 2012-07-19 09:50 DoubleLi 阅读(8038) 评论(0) 推荐(2) 编辑

摘要:一、创建对话框对象1.首先利用资源编辑器创建对话框资源,并针对该对话框资源定义一个对话框类:class CTestDlg : public CDialog2.创建话话框对象模态对话框的创建: 如: CTestDlg dlg; dlg.DoModal();非模态对话框创建: 如: CTestDlg dlg;dlg.Create(IDD_DIALOG, this); 但这样是得不到一个正常显示的非模态对话框的。因为模态与非模态对话框的实现方式并不相同,这里我们还要注意几点。非模态对话框创建完成后是隐藏着的,必须调用ShowWindow来进行显示。对于模态对话框,当执行到DoModal 函数以创建对 阅读全文
posted @ 2012-07-19 09:19 DoubleLi 阅读(13867) 评论(3) 推荐(0) 编辑

摘要:当你使用了ClassWizard建立了控件和变量之间的联系后:当你修改了变量的值,而希望对话框控件更新显示,就应该在修改变量后调用 UpdateData(FALSE);如果你希望知道用户在对话框中到底输入了什么,就应该在访问变量前调用UpdateData(TRUE)。 用处:主要控制ddx_data 把控件中的值和变量进行交换 比如你有个编辑框,输入了一些值,你的程序怎么得到呢;必须先调用这个(当然是在用了ddx的情况) 反之控件的成员变量中的值也可以通过该函数自动显示到控件里面,根据传进来的是true或者false 当你使用了ClassWizard建立了控件和变量之间的联系后:当你修改了变量 阅读全文
posted @ 2012-07-17 16:45 DoubleLi 阅读(53272) 评论(0) 推荐(2) 编辑

摘要:from:http://blog.csdn.net/leolee82/article/details/6992626先载入一张图片,ID为IDB_BITMAP2TestDlg.h中:CBrush m_brBk;//在public中定义TestDlg.cpp中:在初始化函数OnInitDialog()中加入:[cpp] view plaincopyprint?BOOLCTestDlg::OnInitDialog(){CDialog::OnInitDialog();CBitmapbmp;bmp.LoadBitmap(IDB_BITMAP2);m_brBk.CreatePatternBrush(&a 阅读全文
posted @ 2012-07-17 16:41 DoubleLi 阅读(2571) 评论(0) 推荐(0) 编辑

摘要:from:http://blog.csdn.net/leolee82/article/details/6992615windows编程 全屏窗口的创建总结第一种:较简单的方法在ShowWindow(hwnd,SW_SHOWNORMAL);UpdateWindow(hwnd);前加如下代码:[cpp] view plaincopyprint?LONGstyle=GetWindowLong(hwnd,GWL_STYLE);//获得窗口风格 style=&~WS_CAPTION&~WS_SIZEBOX;//窗口全屏显示且不可改变大小 SetWindowLong(hwnd,GWL_ST 阅读全文
posted @ 2012-07-17 16:38 DoubleLi 阅读(6312) 评论(0) 推荐(0) 编辑

摘要:from:http://blog.csdn.net/leolee82/article/details/6992590先认识一下MFC中的一些和绘图有关的结构体和类 1.点 (1)点结构POINT点数据结构POINT用来表示一点的x、y坐标: typedef struct tagPOINT { LONG x; LONG y; } POINT; (2)点类CPoint 点类CPoint为一个没有基类的独立类,封装了POINT结构,有成员变量x和y 其构造函数有5种: CPoint( ); CPoint( int initX, int initY ); CPoint( POINT initPt ); 阅读全文
posted @ 2012-07-17 16:35 DoubleLi 阅读(8203) 评论(0) 推荐(1) 编辑

摘要:from:http://hi.baidu.com/c996387762/blog/item/d1d54b250412602cd40742b2.html首先说一下什么是DC(设备描述表) 解:Windows应用程序通过为指定设备(屏幕,打印机等)创建一个设备描述表(Device Context, DC)在DC表示的逻辑意义的“画布”上进行图形的绘制。DC是一种包含设备信息的数据结构,它包含了物理设备所需的各种状态信息。Win32程序在绘制图形之前需要获取DC的句柄HDC,并在不继续使用时释放掉。 在c++ 编程中常会见到HDC,CDC,CClientDC,CPaintDC,CWindowDC这样 阅读全文
posted @ 2012-07-17 16:30 DoubleLi 阅读(1080) 评论(0) 推荐(1) 编辑

摘要:画刷类CBrush利用画笔可以画图形的边框,而用画刷就可以在图形内着色。大多数的GDI绘图函数既使用画笔又使用画刷,它们用画笔绘制各种图形的周边,而用画刷填充图形,因而可以用一种颜色和风格去设置画笔,而用另一种颜色和风格去设定画刷,通过一次函数调用就可以绘制出形状复杂的图形。画刷是由CBrush类管理的,创建画刷有两种方法:一种是调用构造函数,另一种是调用相关的成员函数。1.CBrush的构造函数CBrush类的结构函数定义如下:① CBrush( );② CBrush( COLORREF crColor );throw( CResourceException );③ CBrush( int 阅读全文
posted @ 2012-07-17 16:22 DoubleLi 阅读(23494) 评论(0) 推荐(1) 编辑

摘要:AppWizard生成的应用程序框架的主窗口具有缺省的窗口风格,比如在窗口标题条中自动添加文档名、窗口是叠加型的、可改变窗口大小等。要修改窗口的缺省风格,需要重载CWnd::PreCreateWindow(CREATESTRUCT& cs)函数,并在其中修改CREATESTRUCT型参数cs。CWnd::PreCreateWindow 函数先于窗口创建函数执行。如果该函数被重载,则窗口创建函数将使用CWnd::PreCreateWindow 函数返回的CREATESTRUCT cs参数所定义的窗口风格来创建窗口;否则使用预定义的窗口风格。CREATESTRUCT结构定义了创建函数创建窗 阅读全文
posted @ 2012-07-17 16:11 DoubleLi 阅读(5740) 评论(1) 推荐(0) 编辑

摘要:问题是这样产生的.在OnEraseBkGnd中,如果你不调用原来缺省 的OnEraseBkGnd只是重画背景则不会有闪烁.而在OnPaint里面, 由于它隐含的调用了OnEraseBkGnd,而你又没有处理OnEraseBkGnd 函数,这时就和窗口缺省的背景刷相关了.缺省的 OnEraseBkGnd操作使用窗口的缺省背景刷刷新背景(一般情况 下是白刷),而随后你又自己重画背景造成屏幕闪动. 另外一个问题是OnEraseBkGnd不是每次都会被调用的.如果你 调用Invalidate的时候参数为TRUE,那么在OnPaint里面隐含 调用BeginPaint的时候就产生WM_ERASEBKGN 阅读全文
posted @ 2012-07-17 16:07 DoubleLi 阅读(4550) 评论(0) 推荐(0) 编辑

摘要:设置对话框背景颜色及背景图片可在OnCtlColor(),OnEraseBkgnd(),OnPaint()里设置,对话框初始化完毕,显示窗口时按顺序调用OnSize()>OnEraseBkgnd()>OnPaint()>OnCtlColor()。OnEraseBkgnd()中默认调用基类(CFrameWnd)的OnEraseBkgnd(), 用窗口类中注册的Brush绘制背景。因此,绘制窗口背景时最好重写OnEraseBkgnd(),但后面不能调用基类的OnEraseBkgnd()。同时,MSDN关WM_ERASEBKGND消息的说明中有写道,DefWindowProc使用窗 阅读全文
posted @ 2012-07-17 10:48 DoubleLi 阅读(6147) 评论(0) 推荐(1) 编辑

摘要:在图形图象处理编程过程中,双缓冲是一种基本的技术。我们知道,如果窗体在响应WM_PAINT消息的时候要进行复杂的图形处理,那么窗体在重绘时由于过频的刷新而引起闪烁现象。解决这一问题的有效方法就是双缓冲技术。因为窗体在刷新时,总要有一个擦除原来图象的过程OnEraseBkgnd,它利用背景色填充窗体绘图区,然后在调用新的绘图代码进行重绘,这样一擦一写造成了图象颜色的反差。当WM_PAINT的响应很频繁的时候,这种反差也就越发明显。于是我们就看到了闪烁现象。我们会很自然的想到,避免背景色的填充是最直接的办法。但是那样的话,窗体上会变的一团糟。因为每次绘制图象的时候都没有将原来的图象清除,造 成了图 阅读全文
posted @ 2012-07-17 10:47 DoubleLi 阅读(10459) 评论(0) 推荐(0) 编辑

摘要:ActiveX控件用于Web的过程是将控件嵌入主页中,用户通过浏览器访问该主页时,将主页中的控件下载,并在用户机器上注册,以后就可在用户的浏览器上运行。控件下载一次后就驻留在用户本地机器上,下次再访问相同的主页时,可不再下载该控件,而是直接运行用户本地的控件。一:vc创建activex控件创建一个activex控件,名称为:test.ocx,创建步骤略。显示结果如下:为该控件增加一个方法void GetStr(LPCTSTR str),该方法内部代码如下:这样,GetStr方法就被加入了。onDraw函数下代码如下下面,测试该方法,鼠标右键控件,选择Invoke Methods,弹出如下对话框 阅读全文
posted @ 2012-07-16 16:05 DoubleLi 阅读(4014) 评论(0) 推荐(0) 编辑

摘要:开篇语:最近在弄ocx控件发布到asp.net网站上使用,就是用户在使用过程中,自动下载安装ocx控件。(此文章也是总结了网上好多人写的文章,我只是汇总一下,加上部分自己的东西,在这里感谢所有在网上发表相关内容的朋友们。)ActiveX控件 用于Web的过程是将控件嵌入主页中,用户通过浏览器访问该主页时,将主页中的控件下载,并在用户机器上注册,以后就可在用户的浏览器上运行。控件下载一 次后就驻留在用户本地机器上,下次再访问相同的主页时,可不再下载该控件,而是直接运行用户本地的控件。这里控件容器就是浏览器,用户不需要通过浏览器调 用控件的属性或方法。因此,开发面向Web的ActiveX控件比开发 阅读全文
posted @ 2012-07-16 15:25 DoubleLi 阅读(485) 评论(0) 推荐(0) 编辑

上一页 1 ··· 24 25 26 27 28 29 30 下一页