- 博客(30)
- 资源 (32)
- 收藏
- 关注
原创 Flutter之ListItem支持点击态背景色
上一篇,我们实现了普通控件的点击态背景色(无论点击快慢都有背景色变化)。但是,当我将其应用到ListItem时,出现错误。原因不知,猜测是与item复用有关。然后我尝试使用AnimatedContainer,可以做到按下和松开时背景色变化。正如上一篇所说,AnimatedContainer无法实现快速按下松开后的背景色变化,因此,我决定参考AnimatedContainer源码实现了ListI...
2019-11-27 17:54:04
1578
2
原创 Flutter之Widget点击态背景色
本文主要解决快速按下松开后,仍然可以看到背景色的变化。在flutter中有个AnimatedContainer,其可以实现按下时背景色变化,松开后背景色还原。但是快速按下松开后,其背景色无变化。原因是,背景色变化需要一个过程,而快速按下松开后就立即结束动画响应事件了。自定义实现代码如下:class StateButton extends StatefulWidget { fina...
2019-11-26 18:01:47
2073
原创 RxAndroid dispose实现原理
示例如下: final Disposable disposable = Observable.create(new ObservableOnSubscribe<String>() { public void subscribe(@NonNull ObservableEmitter<String> e) { for (int...
2019-05-29 15:31:24
1503
原创 RxAndroid,一段简单的代码
先看如下一段代码:public class RxAndroidTest { private static final String TAG = "RxAndroidTest"; public static void test() { final int[] array = { 1, 3, 5, 7, 9 }; final Disposabl...
2019-04-22 11:04:43
200
原创 Activity在onDestroy后,Activity对象的WeakReference并不为空
问题描述:使用普通内部类或匿名类开启线程执行耗时任务,若任务没有结束而Activity销毁,那么,因为内部类或匿名类对外部类Activity持有强引用,会导致Activity对象一直无法释放,从而无法回收,导致内存泄露。于是,改成外部类或内部静态类后,对Activity不产生强引用了,那么,线程任务结束时,如何回调给Activity呢?保存Activity的WeakReference,...
2019-03-08 10:30:06
921
原创 win32拖拽编程
准备 封装win32 API。我们使用到的API有, ImageList_Create、ImageList_Destroy、 ImageList_Add、ImageList_AddMasked、ImageList_Remove、 ImageList_BeginDrag、ImageList_DragEnter、ImageList_EndDrag、ImageList_DragLeave
2016-07-14 17:19:25
1896
原创 c++11 algorithm 常用的容器算法
c++的vector、list、set、map及其成员函数已经足够我们大多数应用了,但是,c++11增加的algorithm配合container可谓所向披靡。vector vec = { 1, 2, 3, 4, 5, 6 }, out;std::copy_if:将容器中符合要求的元素复制到另一个容器std::copy_if(vec.begin(),
2016-06-06 12:06:43
1875
原创 std::shared_ptr的巧妙应用
std::shared_ptr一次创建,多处共享,通过引用计数控制生命周期。问题:假设有一项任务Task,其分为N个小模块,每个小模块都是并发执行。现在要求,任务开始,每个小模块并发执行,在全部小模块执行完后,将所有小模块结果进行下一步处理,任务结束。方案一:任务开始,先创建一个成员变量std::set n_span;(这里Span代表一个小模块,异步执行模块的功能);
2016-06-06 11:34:20
1656
原创 MFC之半透明控件
半透明控件的实现原理:创建一个临时DC,发消息给父控件告知其绘制其内容于临时DC上,然后将自己相对于父控件的那块区域的绘制COPY到自己的PaintDC上,此后再做其他绘制。代码思路如下:Child:{CPaintDC dc;CMemDC mdc;//创建临时DCCBitmap bitmap;CDC cdc;::SendMessage(hParent, WM
2015-07-09 13:59:39
2160
原创 C++模板的魅力和魔力
本文要解决的问题很好描述,但要想取个对应的标题还真不容易。任务描述:假设我有一个逻辑线程,这个线程专门用来处理 各种类成员函数的调用。要求:类类型不限,类成员函数参数类型可以任意。首先为这些成员函数定义一个基类class Task{public:virtual void Run() = 0;};其次,抽象出各类的成员函数参数类型,下面以一个参数为例templ
2013-06-05 10:28:15
1310
1
原创 Magic C++ (函数指针)(xml配置控件样式)
C++ is so magic !!!问题起源: 我在业余时间编写基于WTL的控件重绘,为了灵活设置控件的各种样式,我选择了使用xml来配置控件的样式(比如文字颜色,字体,背景颜色)。其中build.xml用来设置控件类型、位置、文字、样式,skin.xml来设置颜色、字体、图片。 首先定义一个类UIData,提供接口LoadCtrl(从build.xml读取位置信
2013-04-23 16:03:16
1332
原创 note:全局配置visual studio 2010 头文件目录
假如我有3个工程,他们都需要引入头文件夹 wtl81(包含wtl的.h文件),以前的做法是对每个工程都在属性设置中引入wtl81,但是随着工程越来越多(可能是自己平时写的小测试程序),每次都这么做,实在麻烦,有什么好的解决方法呢? 以下几种方法都比较简单1,直接把wtl81文件夹拷贝到vs安装目录下面 C:\Program Files\Microsoft Visual S
2013-04-17 15:44:52
2154
原创 我是那么的喜欢你 try catch
以前在学Java的时候,最讨厌的就是那些try和catch了,不仅把代码拉长了,而且异常处理很不好。 现在在做C++方面的事情,虽然大家一致认为,C++中坚决禁止try和catch,但是我却越发的喜欢用他了。 为什么讨厌又为什么喜欢呢? 讨厌的是,我不喜欢sdk给我定义好的Exception,喜欢的是我自己throw的exception。 下面用一个C++的
2013-04-12 10:59:15
1597
原创 protobuf入门详解(在windows下配置protobuf)
在网络之间传递可读性强的数据,有xml,还有json。相比之下,json比xml要好。但是他们有个弊端,传递的数据是可读的,也就是没有加密,使用网络抓包工具立马可以抓到what you send and what you receive,那么怎么才能传递加密了的json串呢? 简单的方法,在传递json之前,先对json加密,收到数据后再解密。加密和解密算法自然是自己设计最好了。 后来
2013-04-07 17:14:29
3747
2
原创 WTL/MFC多字节和Unicode字符转换
我们在最开始学习MFC的时候,毫无疑问会遇到这样的问题。VC6的设置:多字节。vs的默认设置:Unicode,在属性中可以改成多字节。多字节编码:char,string,CStringA。Unicode编码:wchar_t,wstring,CStringW。注意:如果项目是Unicode,那么CString就被定义为CStringW,否则就是CStringA。附:LPS
2013-03-14 14:30:30
2498
原创 分析:由 XToolTip类 联想到 WTL (MFC) 消息循环
这篇文章从一个问题出发:我想自己写一个XToolTip类。 XToolTip类的思路:1,创建一个WS_POPUP样式的窗口;2,加入需要显示tooltip的控件(XToolTip类采用map来保存这些控件句柄和提示字符串);3,在PreTranslateMessage中调用XToolTip的RelayMsg函数;4,在RelayMsg函数中过滤消息(WM_MOUSEMOV
2013-01-28 14:31:04
2050
原创 Json学习札记
Json和Xml相比有个最大的优势,基于字符串。xml必须与文件相关,而json只是字符串(当然也提供了与文件相关的操作)。Let's say it from my code:#include //解压后找到目录 vs71,用vs打开然后生成解决方案,本程序直接在jsontest.cpp中改写的#include #include #include using names
2013-01-23 15:15:22
1818
原创 MFC控件完全重绘从CWnd开始
导读:我并不推荐采用自绘的方式去完成一些控件(比如CStatic,CButton,RadioBox,CheckBox等)的美化,而是推荐大家从CWnd入手,把这些基本控件完全重新绘制一遍(当然,有些做的很好的控件还是需要继承来自绘的,比如CListCtrl)。为什么这么做?因为MFC对这些控件的某些操作是隐蔽的,某些限制是我们无法接受的(比如CTabCtrl的头部高度和每个Item的宽度)。我
2013-01-08 14:43:31
15425
2
原创 一个简单的在本地传输文件的网络程序
经常在优快云贴吧看见很多关于网络之间传输的例子(比如传输截屏文件),所以很想写一个作为学习。此程序设定很简单,就是在本地传输。当然,要扩展到网络也很简单,改个ip就ok了。基本思路:双方遵循一个包头格式,根据包头确定之后的操作。服务器代码:#include #include #define PORT 6666struct PacketHeader{
2012-11-16 13:48:02
3048
6
原创 初学C++正则表达式(regex)
由效果产生学习的兴趣,即使失败,但至少不会中途作废。正则表达式,语法看起来很多啊!地址参考:http://www.yesky.com/imagesnew/software/vbscript/html/jsgrpRegExpSyntax.htm本文做一个简单的学习介绍:(环境:Windows 7 + Visual Studio 2010)#include //header1,匹配
2012-11-15 16:21:57
7760
原创 tinyxml的学习和简单使用
虽然看起来简单,但开始学习和使用却是不那么简单。首先从 官网 下载源文件:4个cpp和2个h,然后加入到工程即可。在你的代码中加上2句:#include "tinyxml.h"#include "tinystr.h"(刚开始只加了tinyxml.h,以为这个头文件包含了tinystr.h,结果编译一大堆问题,其实tinystr.h不一定会包含,它是通过一个宏定义控制的)(这
2012-11-07 16:39:23
1636
原创 屏幕截图程序(WTL)
如果需要思路,请访问:http://hi.baidu.com/sumos/item/9aef19f4f02e0f5ac9f337bb如果需要程序,请访问:http://download.youkuaiyun.com/detail/zhoujielunzhimi/4724327如果需要源码,请看:#pragma once#include class MainForm;CBitma
2012-11-02 15:06:19
5789
原创 在MFC对话框中,如何让控件Static和Radio和CheckBox背景透明?
要做到透明控件,有两种办法。1,把父窗口中控件所在区域的背景先画到控件上。这种办法适合几乎所有的控件。2,对于简单的控件,如Static、RadioButton、CheckBox,他们有特殊的办法。下面就是第二种做法:(直接看图)这是效果图。主要包括Static、Radio、CheckBox、GroupBox。接下来是代码:(注意环境:vs2010,继承了CDialog
2012-10-25 14:58:39
9696
1
原创 在MFC中,如何将Unicode的CString中文字符写入文本文件TXT中
http://topic.youkuaiyun.com/u/20091207/12/2379a9e4-2f92-4f3e-9db5-59e5f656f78f.html在看了这个论坛后,我也想尝试一下,如何把Unicode中文写到txt文件中。首先请看这篇字符转码的文章:http://blog.youkuaiyun.com/zhoujielunzhimi/article/details/8082286很明显,我
2012-10-23 11:29:48
9392
原创 MFC/WTL字符串转换(CString - char)
CString:当VS编码环境为Unicode时,CString就是CStringW。当VS编码环境为多字节时,CString就是CStringA。在C/C++中同样存在着两种环境的字符串:char 和 wchar_t。本文的目的是:转换他们。Code Start :class UStrToAscChar //CStringW + wchar_t* -> char*{
2012-10-17 17:15:59
7556
2
原创 在MFC/WTL中如何绘制Gif动态图片
说明:本文内容参考了 codeproject 的此文,http://www.codeproject.com/Articles/1776/Adding-GIF-animation-using-GDI 。本文所写代码针对多帧gif,如果是单帧gif,则会出错(可以把Load中的IsAnimate函数放到Start开头判断,如果是单帧,就返回,否则,启动定时器)。代码中有判断的函数。思路:首先
2012-10-16 15:30:31
5400
1
原创 在WTL中利用滚动窗口类CScrollWindowImpl显示BMP图片
之前我也写了一篇用滚动窗口类显示图片的博客:http://blog.youkuaiyun.com/zhoujielunzhimi/article/details/7899735本文与之不同,上面的这个滚动窗口具有通用性,比如滚动窗口可以装载控件,但是比较繁琐的是滚动参数需要自己去控制。下面要介绍的是利用WTL的类CScrollWindowImpl来完成,这个类只是用来显示图片,对于控件暂不知(个人
2012-09-10 14:56:53
2954
原创 WTL:如何绘制ComboBox
首先给大家介绍一个csdn博客关于ComboBox的组成和如何绘制的介绍。http://blog.youkuaiyun.com/fengbangyue/article/details/5222124我要绘制的是drop list模式的ComboBox。直接上代码://下拉列表框class ComboBox : public CWindowImpl,public COwnerDraw{
2012-08-24 14:48:56
3158
1
原创 WTL:如何利用滚动窗口ScrollWnd查看图片Image
这个问题说起来简单,做起来难。虽然说是WTL,但我想MFC应该没有太大差别。关键点:ScrollWindow,MoveWindow。首先看ScrollWnd。class ScrollWnd : public CWindowImpl //MFC中直接继承CWnd,WTL的精髓就是模板{private: const int LINE; //定义移动的距离public
2012-08-23 14:42:06
4586
1
原创 mfc 绘制 圆形按钮 继承CButton
头文件// MyButton 圆形按钮class MyButton : public CButton{private: bool is_pressed; //鼠标是否按下public: virtual void PreSubclassWindow(); //修改自绘属性 virtual void DrawItem(LPDRAWITEMSTRUCT /*lpDrawItemS
2012-05-07 13:30:54
9263
透明按钮Radio和CheckBox
2012-10-25
MFC类CPictureEx显示gif
2012-09-07
VS2010版本的msvcr100.dll
2012-02-28
简单的三国杀
2012-01-06
基于MFC对话框扫雷程序
2011-12-26
仿QQ多窗口聊天界面
2011-12-24
基于C/C++音乐播放器
2011-11-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人