现在位置: 首页 > 所有2012年发表的文章
2012-08-14 23:20 工业·编程 ⁄ 共 1865字 暂无评论
视图窗口完全建立后第一个被框架调用的函数。框架在第一次调用OnDraw前会调用OnInitialUpdate,因此OnInitialUpdate是设置滚动视图的逻辑尺寸和映射模式的最合适的地方。 时间上,两者先后顺序不同,构造函数生成本类的对象,但没有产生窗口,OnCreate后窗口产生,然后才是视图的OnInitialUpDate,一般在这里对视图的显示做初始化。简单点,就是ONCREATE只是产生VIEW的基本结构和变量而在OnInitialUpDate()中,主要初始化视图中...
阅读全文
2012-08-14 23:19 工业·编程 ⁄ 共 693字 暂无评论
CDC是Windows绘图设备的基类 CClientDC: (1)(客户区设备上下文)用于客户区的输出,与特定窗口关联,可以让开发者访问目标窗口中客户区,其构造函数中包含了GetDC,析构函数中包含了ReleaseDC CPaintDC: (1)用于响应窗口重绘消息(WM_PAINT)是的绘图输出。 (2)CPaintDC在构造函数中调用BeginPaint()取得设备上下文,在析构函数中调用EndPaint()释放设备上下文。EndPaint()除了释放设备上下文外,还负责从消息队...
阅读全文
2012-08-14 23:17 工业·编程 ⁄ 共 5387字 暂无评论
对于MFC程序员来说做UI开发是痛苦的事情,不过大多数情况下我们都需要做这件事情,因为MFC自带的控件实在是太简陋了。这时候我们多半会涉及到自绘控件,随之而来的很可能就是窗口和控件的闪烁问题。这篇文章希望对MFC的窗口和控件闪烁问题做一个尽量全面的总结。 一、闪烁的原因 引起闪烁的原因很多,以至于网上有n多种解决闪烁问题的方法;如果你按照某一种方法做了仍然没有解决你的问题,请不要认定这个方法有问题,而是你没...
阅读全文
PreSubclassWindow PreSubclassWindow是一个很好的定制控件的位置。如果我们通过重载CWnd::PreCreateWindow定制控件,而用户在对话框中使用控件。由于对话框中的控件窗口是通过CreateDlgIndirect创建,不经过CWnd::CreateEx函数,PreCreateWindow函数不会被调用。 其实,用户要在对话框中使用定制控件,必须用DDX或者SubclassDlgItem函数子类化控件,这时PreSubclassWindow一定会被调用。 如果用户直接创建定制控件窗口,CWnd...
阅读全文
2012-08-14 23:15 工业·编程 ⁄ 共 2358字 暂无评论
我为了移动一个无标题栏的窗体,使用了WM_NCHITTEST消息,这个消息大概如下: 通常,我们拖动对话框窗口的标题栏来移动窗口,但有时候,我们想通过鼠标在客户区上拖动来移动窗口。 一个容易想到的方案是,处理鼠标消息WM_LBUTTONDOWN和WM_LBUTTONUP。在OnLButtonUp函数中计算鼠标位置的变化,调用MoveWindow实现窗口的移动。 注意,拖动标题栏移动窗口的时候,会出现一个矩形框,它提示了窗口移动的当前位置。当鼠标左键放开的...
阅读全文
2012-08-14 23:14 工业·编程 ⁄ 共 246字 暂无评论
新建一个对话框程序,在上面添加一个CMyBtn(class CMyBtn : public CButton),左键单击按钮,按钮会相应WM_LBUTTONDOWN,然后CButton::OnLButtonDown(nFlags, point); 会以一个WM_NOTIFY的消息形式传递给对话框。对话框可以继续处理该事件。 在对话框里面使用该消息的方法是:ON_COMMAND(MY_BTN, memberfun); 其实WM_NOTIFY是以WM_COMMAND的形式呈现的。。(深入浅出MFC--P411)
阅读全文
2012-08-14 23:13 工业·编程 ⁄ 共 6093字 暂无评论
基础知识很重要,Win32中的窗口句柄和MFC窗口类对象的2个概念。前者被后者包装了起来。 先看下MSDN中的TN017中的文章 In the case of C++ Windows objects that do perform auto-cleanup, you must callDestroyWindow. If you use operator delete directly, the MFC diagnostic memory allocator will alert you that you are freeing memory twice (the first call todelete as well as the indirect call to "delete th...
阅读全文
2012-08-14 23:12 工业·编程 ⁄ 共 3898字 暂无评论
我们经常在一些软件中看到类似的功能:鼠标移动到一个按钮(或其他控件)上的时候,自动弹出一些提示(不是弹出对话框),以提醒用户该控件的作用或注意事项。这种提示就是所说的Tooltip(如图1所示)。关于Tooltip,网上已经有很多资料了,我在这里只是给大家提供一些链接,让没有做过的朋友能在最短的时间内实现这个功能。 图1 Codeproject已经有许多现成的Tooltip类,并且有的功能非常之强,可以直接拿来用,这会为你节省...
阅读全文
2012-08-14 23:07 工业·编程 ⁄ 共 792字 暂无评论
一直对C++中的delete和delete[]的区别不甚了解,今天遇到了,上网查了一下,得出了结论。做个备份,以免丢失。 C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间的时候用 delete[]。 关于 new[] 和 delete[],其中又分为两种情况:(1) 为基本数据类型分配和回收空间;(2) 为自定义类型分配和回收空间。 请看下面的程序。 #include <iostream>; using name...
阅读全文
2012-08-14 23:06 工业·编程 ⁄ 共 263字 暂无评论
WORD * p1 = new WORD(3);<span style="white-space:pre">    </span> WORD * p2 = new WORD[3]; int sWORD = sizeof(WORD);    // 2 int msp1 = _msize(p1);    // 2 int msp2 = _msize(p2);    // 6 cout << *p1 << endl;    // 3   大家看后面的debug值就知道结果了。 WORD占2个字节. P1动态...
阅读全文