DoubleLi

qq: 517712484 wx: ldbgliet

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

随笔分类 -  VC/MFC

上一页 1 ··· 19 20 21 22 23 24 25 26 27 ··· 30 下一页

摘要:参考文章:白乔原创:VC之美化界面篇在每个控件开始绘制之前,都会向其父窗口发送WM_CTLCOLOR通告消息,在该消息的处理函数中,可以设置控件显示文本的前景色、背景色以及字体。该消息处理函数还要求返回一个画刷的句柄,用于在控件具体的绘制之前擦除其客户区。WM_CTLCOLOR映射消息处理函数为afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)。常用代码为:[cpp] view plaincopyprint?pDC->SetTextColor(RGB(255,0,0));//设置文本前景色 pDC->Set 阅读全文
posted @ 2012-12-06 00:38 DoubleLi 阅读(10541) 评论(0) 推荐(1) 编辑

摘要:1. MFC的消息反射机制http://blog.csdn.net/cay22/article/details/61716162. CButtonST v3.9http://www.codeproject.com/Articles/57/CButtonST-v3-9-MFC-Flat-buttons3. 白乔原创:VC之美化界面篇http://blog.csdn.net/bluejoe2000/article/details/4269540#comments4. MoreWindows:秒杀多线程系列http://blog.csdn.net/morewindows/article/detail 阅读全文
posted @ 2012-12-06 00:33 DoubleLi 阅读(290) 评论(0) 推荐(0) 编辑

摘要:代码下载:subclass(请点击进入论坛回复以后下载)也许你需要一个特殊的Edit来限制浮点数的输入,但是现有的Edit却并不能完成这项工作――因为它只能够单纯的限制大小写或者纯数字。当你在论坛上求救的时候,某个网友告诉你:“用子类化。”你也许会在看到一线曙光的同时多出了一连串的问题:何为子类化?子类化的原理是什么?如何实现子类化?下面就让我从一个简单的C++程序开始,一步步解开你的疑团吧。 首先,我为你列出以下这个C++程序:01.#include <iostream>02.usingnamespacestd;03.classParent04.{05.public:06.voi 阅读全文
posted @ 2012-12-06 00:31 DoubleLi 阅读(334) 评论(0) 推荐(0) 编辑

摘要:Win32下的消息流程清晰明了,但在MFC下,由于封装的缘故,隐藏的有点深,对一般的开发人员而言,就不甚明了喽。本文试图粗略展示出MFC下消息处理的基本流程。一、先看一下Win32下的消息处理流程 每一个线程都对应有一个消息队列,利用API函数GetMessage从消息队列中获取消息,然后利用TranslateMessage翻译消息(主要是一些键盘消息),再利用DispatchMessage将消息分发给对应的窗口过程函数处理。 一般我们在WinMain函数中利用如下代码来处理消息:[cpp] view plaincopyprint?while(GetMessage(&msg,NUL.. 阅读全文
posted @ 2012-12-06 00:28 DoubleLi 阅读(1639) 评论(0) 推荐(0) 编辑

摘要:我很早的时候写过一篇MFC中CDialog与其对话框资源的绑定,但这几天在MFC DLL上做了一些工作后发现当时的理解实在肤浅。说不定过了几年再回头看看目前这篇文章,又觉得本文也是鬼话连篇了吧,哈哈。使用DLL中的资源面临的一个主要问题是,DLL和EXE中都有资源集,但是程序在运行态到底会去哪个资源集中找常常令我们疑惑。考虑如下的经典情况:在新建MFC DLL工程时选中Regular DLL using shared MFC DLL选项,新建一个与MFC自身DLL共享的DLL。在新DLL中新建一个ID名为IDD_DLLDIALOG的对话框资源。在这个DLL中导出一个ShowDialog()函数 阅读全文
posted @ 2012-12-04 20:54 DoubleLi 阅读(954) 评论(0) 推荐(0) 编辑

摘要:最近对于对话框选定资源的过程有了更进一步的了解按一般的风格,MFC的对话框中一般都会有这么一行:enum { IDD = xxxxx };在这个对话框的构造函数里一般会这样写查看源代码打印帮助1InvoiceDialog::InvoiceDialog(CWnd* pParent /*=NULL*/) : 2CDialog(InvoiceDialog::IDD, pParent), 3m_Invoice(NULL) 4{ 5//{{AFX_DATA_INIT(InvoiceDialog) 6// NOTE: the ClassWizard will add member initializati 阅读全文
posted @ 2012-12-04 20:50 DoubleLi 阅读(1115) 评论(0) 推荐(0) 编辑

摘要:ClipCursor 函数功能:该函数把鼠标限制在屏幕上的一个矩形区域内,如果调用SetCursor或用鼠标设置的一个随后的鼠标位置在该矩形区域的外面,则系统自动调整该位置以保持鼠标在矩形区域之内。 函数原型:BOOL ClipCursor(CONST RECT * lpRect); 参数: IpRect:指向RECT结构的指针,该结构包含限制矩形区域左上角和右下角的屏幕坐标,如果该指针为NULL(空),则鼠标可以在屏幕的任何区域移动。 返回值:如果成功,返回值非零;如果失败,返回值为零。若想获得更多错误信息,请调用GetLastError。 备注: 1.光标是一个共享资源,如果... 阅读全文
posted @ 2012-12-04 14:06 DoubleLi 阅读(2773) 评论(0) 推荐(0) 编辑

摘要:绍:CPPToolTip是一个非常棒的工具提示实现,它支持HTML-lite语句、CSS样式表、菜单、工具条、淡入淡出、超链接、动画、表格等等超强功能。 正文:下载源代码CPPToolTip是一个非常棒的工具提示实现,它支持HTML-lite语句、CSS样式表、菜单、工具条、淡入淡出、超链接、动画、表格等等超强功能。一、使用CPPToolTip的第一步:文件的引用文件描述PPTooltip.hPPTooltip.cppCPPTooltip 类PPHtmlDrawer.h PPHtmlDrawer.cppCPPHtmlDrawer类. 在tooltip里画出HTML字符串。PPDrawManag 阅读全文
posted @ 2012-12-04 10:14 DoubleLi 阅读(2246) 评论(0) 推荐(0) 编辑

摘要:SmartWin++遵循BSD许可协议的C++ GUI库,建立在Windows API之上,但仍可以通过使用WineLib在Linux/xNix上使用。也支持Pocket PC和基于Windows CE的应用程序...XCLASSXCLASS库是X Windows环境中的一个C++ GUI工具包的。它是基于Xlib的,由一套组件,包括从简单部件到复杂的,其中也包括许多常用的对话框。组件有MS Windows外观风格。Windows++Windows++是一个轻量级的C++应用程序框架,它可以让你的C++程序中使用窗口FOXFOX是一个C++开发图形用户界面库,方便和有效的基础工具包。V C++ 阅读全文
posted @ 2012-12-04 10:12 DoubleLi 阅读(885) 评论(0) 推荐(0) 编辑

摘要:(1)ACE庞大、复杂,适合大型项目。开源、免费,不依赖第三方库,支持跨平台。http://www.cs.wustl.edu/~schmidt/ACE.html(2)AsioAsio基于Boost开发的异步IO库,封装了Socket,简化基于socket程序的开发。开源、免费,支持跨平台。http://think-async.com/(3)POCOPOCO C++ Libraries 提供一套 C++ 的类库用以开发基于网络的可移植的应用程序,功能涉及线程、线程同步、文件系统访问、流操作、共享库和类加载、套接字以及网络协议包括:HTTP、 FTP、SMTP 等;其本身还包含一个 HTTP 服务 阅读全文
posted @ 2012-12-04 10:12 DoubleLi 阅读(3309) 评论(0) 推荐(0) 编辑

摘要:下载源代码一.前言在实际运用中,经常需要根据操作来增减菜单和菜单项。在VC++开发环境下,动态生成菜单的方法有多种。例如:可以利用资源编辑器创建菜单资源,然后在程序运行中动态加入菜单,这种动态生成菜单的方法比较常见,运用比较多。用这种方法动态增加菜单时,首先需要在Resource.h中添加菜单ID;由于是动态生成的菜单选项,所以要实现它的功能就不能在ClassWizard中映射函数了,需要在头文件中手动添加消息函数原型,在代码文件中手动添加消息映射和添加消息响应函数。动态生成菜单的另一种方法,不能事先对每个菜单ID进行定义,比如从数据库中读出的每条记录内容动态添加为菜单项,菜单项的数量不是固定 阅读全文
posted @ 2012-12-04 00:27 DoubleLi 阅读(926) 评论(0) 推荐(0) 编辑

摘要:窗口样式参考列表WS_POPUP - 弹出式窗口(不能与WS_CHILDWINDOW样式同时使用)WS_CHILDWINDOW - 子窗口(不能与WS_POPUP合用)WS_MINIMIZE - 最小化状态WS_VISIBLE - 可见状态WS_DISABLED - 不可用状态WS_CLIPSIBLINGS - 使窗口排除子窗口之间的相对区域WS_CLIPCHILDREN - 当在父窗口内绘图时,排除子窗口区域WS_MAXIMIZE - 具有最大化按钮,须指定WS_SYSTEM样式WS_CAPTION - 有标题框和边框(和WS_TILED样式相同)WS_BORDER - 有单边框WS_DLG 阅读全文
posted @ 2012-12-03 23:56 DoubleLi 阅读(1520) 评论(1) 推荐(0) 编辑

摘要:菜单项属性说明:ID 标识菜单的唯一常量。Caption 菜单项标题,“&" 后面的字符为快捷键,在菜单项后的字符将加下划线。Separator 水平线,其它属性无效。Pop_up 有子菜单Grayed 无效,标题以灰色显示Inactive 无效,标题正常显示Checked 在标题前加一个对钩break 为None时,使它和它的兄弟们一行或一列显示。Help 只对最上层菜单项有效,使它及后面的最上层菜单移到窗口的右上角。Prompt 当鼠标指向它时的提示信息多文档应用程序除了生成IDR_MAINFRAME外,还生成标识符为IDR_xxxxTYPE,其中xxxx为应用程序名。它 阅读全文
posted @ 2012-12-03 23:51 DoubleLi 阅读(2005) 评论(0) 推荐(0) 编辑

摘要:CMenu类从CObject类派生而来。为什么要使用CMenu类呢?AppWzard不是把菜单做好了吗?在资源编辑器上修改菜单不是很方便吗?我是个vc++初学者,自从当斑竹以来,天天看贴子,也学到了不少东西。感觉学vc++稍微深入一点好,至少要能搞清楚AppWizard在背后都干了些什么东西。 事实上mfc就是用CMenu类来生成菜单的。让我们就从CMenu开始吧。CMenu生成的菜单有两种:Popup类型和非Popup类型。这两种方法里又可以分成使用资源编辑器生成的菜单资源和不使用这个资源。对于非Popup类型的菜单,必须在创建出来后把它张贴到某个窗口上,它才会显示出来,从而才有用处。Po 阅读全文
posted @ 2012-12-03 20:37 DoubleLi 阅读(5683) 评论(0) 推荐(0) 编辑

摘要:1.AfxWndProc()该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc 2.AfxCallWndProc() 该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用,然后调用WindowProc()函数 3.WindowProc()该函数负责发送消息到OnWndMsg()函数,如果未被处理,则调用DefWindowProc()函数 4.OnWndMsg()该函数的功能首先按字节对消息进行排序,对于WM_COMMAND消息,调用OnCommand()消息响应函数,对于WM_NOTIFY消息调用OnNotify()消息响应函数。任何被 阅读全文
posted @ 2012-12-03 20:24 DoubleLi 阅读(530) 评论(0) 推荐(0) 编辑

摘要:CreateMenu和CreatePopupMenu都是用来创建菜单,都可以用AppendMenu 或InsertMenu 向其中添加菜单。两者的不同点在于使用TrackPopupMenu 上:例:CMenu menu;menu.CreateMenu();menu.AppendMenu(MF_STRING, 23423, _T("sdfwef"));menu.AppendMenu(MF_STRING, 23423, _T("sdfwef2"));menu.TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, po 阅读全文
posted @ 2012-12-03 19:50 DoubleLi 阅读(1343) 评论(0) 推荐(0) 编辑

摘要:C++中嵌入ie浏览器总结(1) - ie边框 及上下文菜单 最近项目中用html 来做界面,也就折腾了一下在wxwidget中嵌入浏览器的若干细节工作,mfc也基本是类似的,由于wxwidget中已经做了一个封装wxie,但是开发过程中也遇到了不少问题,在此做一下总结:ie边框 及上下文菜单 普通嵌入到程序里面的浏览器页面都会有一个灰色的边框,这样放到程序里面就很难看。目前网上流行的办法添加css:body{border:0;} 但是这个方法的缺点是,必须要把页面头部的dtd申明去掉。网上的错误提法是类似以下链接的:http://www.faceker.com/200801/webbrows 阅读全文
posted @ 2012-11-29 23:25 DoubleLi 阅读(1041) 评论(0) 推荐(0) 编辑

摘要:1.独立代码//-----------开始---------------------//#include <atlbase.h>#include <Mshtml.h>#include <winuser.h>#include <comdef.h>#include <string.h>void EnumIE(void);//处理网页void EnumFrame(IHTMLDocument2 * pIHTMLDocument2);//处理框架void EnumForm(IHTMLDocument2 * pIHTMLDocument2);// 阅读全文
posted @ 2012-11-27 21:05 DoubleLi 阅读(5058) 评论(0) 推荐(0) 编辑

摘要:1.独立代码//-----------开始---------------------//#include <atlbase.h>#include <mshtml.h>#include <winuser.h>#include <comdef.h>#include <string.h>void EnumIE(void);//处理网页CComModule _Module; //使用CComDispatchDriver ATL的智能指针,此处必须声明#include <atlcom.h>void EnumAllElement(IH 阅读全文
posted @ 2012-11-27 21:04 DoubleLi 阅读(1271) 评论(0) 推荐(0) 编辑

摘要:void CBtnDlg::OnOK() {// TODO: Add extra validation here// 动态构建按钮代码CButton* pNewButton = new CButton();// 也可以定义为类的成员变量。CRect rcButton( 10, 10, 50, 30); // 按钮在对话框中的位置。pNewButton->Create("按钮", 0, rcButton, this, 10098);pNewButton->ShowWindow(SW_SHOW); //CDialog::OnOK();}LRESULT CBtnDlg 阅读全文
posted @ 2012-11-27 21:02 DoubleLi 阅读(1860) 评论(0) 推荐(0) 编辑

上一页 1 ··· 19 20 21 22 23 24 25 26 27 ··· 30 下一页