随笔分类 - MFC开发
摘要:参考链接:好吧,CSS3 3D transform变换,不过如此!transform-style:preserve-3d属性要在图片所在的容器(父元素)中定义,perspective定义在父子元素上的效果不同。对象的Z轴与其平面垂直,因此照片需要先旋转,再位移;否则所有照片都会挤到一起。点击图片后,...
阅读全文
摘要:代码: 父元素内容 Web前端开发 line-height行高问题 其实区别就在于继承的问题上。150%是先计算后继承,根据父元素的字体大小计算出行高,并且子元素依然沿用这个计算后的行高:子元素的行高 = 16*150% = 24px; 因此字体显示不...
阅读全文
摘要:代码简化,促进跨平台开发的目的. typedef 行为有点像 #define 宏,用其实际类型替代同义字。 不同点:typedef 在编译时被解释,因此让编译器来应付超越预处理器能力的文本替换。用法一:typedefint(*MYFUN)(int,int);这种用法一般用在给函数定义别名的时候上面的例子定义MYFUN 是一个函数指针, 函数类型是带两个int 参数, 返回一个int在分析这种形式的定义的时候可以用下面的方法:先去掉typedef 和别名,剩下的就是原变量的类型.去掉typedef和MYFUN以后就剩:int (*)(int, int)用法二:typedef给变量类型定义一个别名
阅读全文
摘要:VS2010建的SDI/MDI与之前的不一样,是类似BCG的一些东西,所以用之前的方法GetMenu()得到CMenu是NULL或者无效。您可以在CMainFrame类中找到CMFCMenuBar m_wndMenuBar;这个成员变量,如果您将跟它相关的代码注释掉的话,然后再试试GetMenu()函数看看。
阅读全文
摘要:并不是所有字体,由TextOut函数输出都能形成路径, 通常像宋体、楷体_GB2312等TrueType类型的字体才可以, 有一个简单的判断方法,当你打开字体选择对话框时,只有字体 前有T符号标记的,才是TrueType字体,当然在CFontDialog中可以 指定只显示TrueType字体! 所以以下代码经测试通过! void CTextView::OnDraw(CDC* /*pDC*/){ CTextDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; // TODO: 在此处为本机数据添加绘制代码 CClien
阅读全文
摘要:讲述MFC AppWizard的原理与MFC程序框架的剖析。AppWizard是一个源代码生成工具,是计算机辅助程序设计工具,WinMain在MFC程序中是 如何从源程序中被隐藏的,theApp全局变量是如何被分配的,MFC框架中的几个类的作用与相互关系,MFC框架窗口是如何产生和销毁的,对窗口类的 PreCreateWindow和OnCreate两个函数的着重分析,Windows窗口与C++中的CWnd类的关系。1,寻找WinMain入口: 在安装目录下找到MFC文件夹下的SRC文件夹,SRC下是MFC源代码。 WinMain在APPMODUL.CPP中实现:_tWinMain(HINSTA
阅读全文
摘要:通过安装Hook过程,可以用来屏蔽消息队列中某些消息,可以与某一线程相关或者与当前桌面的所有线程相关;HHOOK SetWindowsHookEx(int idHook, //Hook的类型WH_*,如WH_MOUSE监视鼠标过程HOOKPROC lpfn, //Hook过程(固定格式):DLL中的过程或者与当前线程处于同一进程的过程HINSTANCE hMod, //DLL的句柄DWORD dwThreadId //1、为零:表示和所有安装的线程相关,hMod需要指定DLL句柄和lpfn指定DLL中的钩子过程; //2、为线程id:hMod为NULL,lpfn为同一进程内的过程;);一、下面
阅读全文
摘要:一、Windows API中的所有函数都包含在DLL中。其中有三个最重要的DLL: Kernel32.dll,它包含用于管理内存、进程和线程的各个函数; User32.dll,它包含用于执行用户界面任务(如窗口的创建和消息的传送)的各个函数; GDI32.dll,它包含用于画图和显示文本的各个函数。二、静态库和动态库 静态库:函数和数据被编译进一个二进制文件(通常扩展名为.LIB)。在使用静态库的情况下,在编译链接可执行文件时,链接器从库中复制这些函数和数据并把它们和应用程序的其他模块组合起来创建最终的可执行文件(.EXE文件); 动态库: 在使用动态库的时候,往往提供两个文件:一个引入库和一
阅读全文
摘要:容器和服务器程序容器应用程序时可以嵌入或链接对象的应用程序。Word就是容器应用程序。服务器应用程序是创建对象并且当对象被双击时,可以被启动的应用程序。Excel就是服务器应用程序。ActiveX控件不能独立运行,它必须被嵌入容器应用程序中,和容器应用程序一起运行。Dispatch maps调度映射,主要是MFC提供让外部应用程序可以访问控件的属性和方法Event maps事件映射,控件向包含它的容器发送事件通知接口是外部程序和控件进行通信的协议,可以把接口看作是函数的集合,外部程序通过借口提供的方法,去访问控件的属性和方法。接口中所定义的所有函数都是纯虚函数regsvr32 ...注册控件r
阅读全文
摘要:有四种方法1.剪贴板a.创建个ClipBoard的对话框应用程序,加两EditBox和两个Button发送接收。b.具体代码:发送端代码:if(OpenClipboard()){CString str;HANDLE hClip;char *pBuf;EmptyClipboard();GetDlgItemText(IDC_EDIT_SEND,str);hClip=GlobalAlloc(GMEM_MOVEABLE,str.GetLength()+1);pBuf=(char*)GlobalLock(hClip);将句柄转换为指针!strcpy(pBuf,str);GlobalUnlock(hCli
阅读全文
摘要:1. 事件对象事件对象同上一课中的互斥对象一样属于内核对象,它包含三个成员:使用读数,用于指明该事件是一个自动重置的还是人工重置的事件的布尔值,用于指明该事件处于已通知状态还是未通知状态的布尔值.当人工重置的事件对象得到通知时,等待该事件对象的所有纯种无变为可高度线程,而一个自动重置的事件对象得到通知时,等待该事件对象的线程中人有一个变为可高度线程.所以一般使用线程同步时使用自动重置.创建事件对象:HANDLE CreateEvent(LPSECURITY_ATTRIBUTES lpEventAttributes, // 安全选项,默认为NULLBOOL bManualReset, // re
阅读全文
摘要:1. 程序,进程,线程A: 程序是计算机指令的集合,它以文件的形式存储在磁盘上,而进程通常被定义为一个正在运行的程序的实例,是一个程序在其自身的地址空间中的一次执行活动.一个程序可以对应多个进程.进程是资源申请,高度和独立运行的单位,因此,它使用系统中的运行资源,而程序不能申请系统资源,不能被系统高度也不能作为独立运行的单位,因此它不占系统运行资源.进程组成:<1> 操作系统用来管理进行的内核对象 内核对象也是系统用来存放关于进程的统计信息的地方.内核对象是操作系统内部分配的一个内在块,该内存块是一种数据结构,其成员负责维护该对象的各种信息.<2> 地址空间 它包含所有
阅读全文
摘要:sockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW);基于TCP的socket编程是采用的流式套接字(SOCK_STREAM)。基于UDP采用的数据报套接字(SOCK_DGRAM).1.TCP流式套接字的编程步骤在使用之前须链接库函数:工程->设置->Link->输入ws2_32.lib,OK!服务器端程序:1、加载套接字库2、创建套接字(socket)。3、将套接字绑定到一个本地地址和端口上(bind)。4、将套接字设为监听模式,准备接收客户请求(listen)。5、等待客户请求到来;
阅读全文
摘要:1. 常量指针与指针常量的区分char ch[5]="lisi";const char *pStr=ch;//const在*之前,表明指针指向的内容为常量,即为常量指针,但指针可指向其它变量。char * const pStr=ch;//const在*之后,表明指针的地址不能改变,即为指针常量,但指针所指向的内容是可以改变的;const char * const pStr = ch;指向常量的常量指针,指针的地址与指向的内容都不可以改变。2. 对文件读写的三种方法<1>.C语言FILE *pFile=fopen("1.txt","w
阅读全文
摘要:1. CArchive在菜单打开保存时的代码CFile file("1.txt",CFile::modeCreate | CFile::modeWrite);CArchive ar(&file,CArchive::store);int i=4;char ch='a';float f=1.3f;CString str("http://www.sunxin.org");ar<<i<<ch<<f<<str;以上是保存,打开略2. 文档-视类结构简介OnNewDocument在程序启动时被调
阅读全文
摘要:1. 画图: a.创建四个菜单,为其添加消息响应; b.在View中添加m_DrawType,保存绘画类型; c.增加成员变量,m_PtOrigin,当按下鼠标左键时,保存此点; d.在OnLButtonUp中画点,线,矩形,椭圆,别忘记设置成透明画刷2. 为其添加一个设置对话框(线型和线宽) a.创建对话框,为其创建一个新类关联它; b.为其中的线宽关联成员变量; c.在View中增加一个菜单,响应新的对话框;d.添加线型选项设置,将其Group属性选中,并为单选按纽关联成员变量。在view中增加一个线型变量m_nLineStyle3 .添加一个颜色对话框 a.实例化一个CColorDial
阅读全文
摘要:1. 创建4个菜单,为其添加消息响应,用成员变量保存绘画类型。添加LButtonDown和Up消息。2. 当窗口重绘时,如果想再显示原先画的数据,则需要保存数据。为此创建一个新类来记录绘画类型和两个点。class CGraph{public:CPoint m_ptOrigin;//起点CPoint m_ptEnd;//终点UINT m_nDrawType;//绘画类型CGraph();CGraph(UINT m_nDrawType,CPoint m_ptOrigin,CPoint m_ptEnd);//此为构造函数。virtual ~CGraph();};然后在void CGraphicVie
阅读全文
摘要:1,修改外观和图标可以在MainFrm中进行,而修改背景和光标只能在View中进行。为什么?因为view的显示挡在了MainFrame的前面。a.在MainFrame中PreCreateWindow()中,在窗口创建之前,用重新注册窗口类的方法,比较麻烦。在PreCreateWindow()中修改也可以用简单的方法,用全局函数//cs.lpszClass=AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW,0,0,// LoadIcon(NULL,IDI_WARNING));在窗口创建之后,在OnCreate()中修改//SetWindowLong(m_hW
阅读全文
摘要:1. Windows应用程序工作的基本流程是从用户那里得到数据,经过相应的处理之后,现把处理结果输出到屏幕,打印机或者绵输出设备。这就需要用到Windows应用程序的用户接口对话框。对话框就是一个窗口,它不公可以接收消息,而且还可以被移动和关闭,甚至可以在它的客户区中进行绘图。相当于一个窗口,在它上面能够旋转各种标准控件和扩展控件。都是由CWnd类派生来2. 对话框的类型:模态(Model)对话框和非模态(Modeless)对话框模态对话框:指当其显示时,程序会暂停执行,直到关闭这个模态对话框后,才能继续执行程序中其它任务。当一个模态对话框打开时,用户只能与该对话框进行交互,而其它用户界面对象
阅读全文

浙公网安备 33010602011771号