C++
fonx
这个作者很懒,什么都没留下…
展开
-
Dynatyper for Windows crash 排故
当前节接受了足够的新按键之后,不再接受新按键:如果多按几键,再回删时,就能把后台的输入串「ㄅ'一」删掉几键。例如,在「ㄅ'一」的基础上,再输入「一一一」,将得到输入串「ㄅ'亖」,此时再输入按键,输入串将不再改变,提示已不再接受按键。但是按键数仍然是计算的,因此,如果再输入「一一一」,虽然输入串仍是「ㄅ'一」,但如果回删,就能把后台的「」删除,从而使系统回到正常状态。超额输入按键数可以大于输入串长度。原创 2022-12-15 15:03:29 · 510 阅读 · 0 评论 -
C++ 字符类型转换
汇总各种字符类型转换方法。原创 2022-12-15 13:29:56 · 94 阅读 · 0 评论 -
dll 读文件时文件路径的玄学
在 dll 中读取了一个相对路径文件:config.txt,由于 dll 是在 Windows/System32 下放置且注册的,于是想当然地以为 config.txt 也应该放在 System32 下面,这样 dll 就能找到它。另外发现,保存到 System32 和 WOW64 下面的两个 config.txt,实际上是一个,修改其中一个,另一个也变。1)对于记事本,已经存在的文件,再次打开后,调用 dll 读取 System32/config.txt。原创 2022-12-14 13:55:32 · 362 阅读 · 0 评论 -
动态输入法 TSF 启动过程分析
dTyperJar 还有两个重要的成员函数:setJvm() 和 startup(). 在 setJvm()中,把 penv0, mainclass0 进行本地存储,penv0->GetJavaVM(&jvm);在 CSmapleIME 中启动的 jvm,其环境指针 penv0,主类 mainclass0,主类实例 dTyper0,通过 _pCompositionProcessorEngine->setJvm()传递给其成员 ->dTyperJar。至此,dTyper 完成了初始化,可以执行打字功能。原创 2022-12-12 22:17:10 · 395 阅读 · 0 评论 -
VS Studio dll 编译 debug
关于使用静态MFC,Win32编译报错(error LNK2019: 无法解析的外部符号)的解决办法:编译设置,添加 gdi32.lib。常规-》输出目录,目标文件名,都可自定义,可把 win32,x64的输出设为同一个目录,但用文件名区分,加 _x86 _64。配置和平台的选取状态,并不是编译的状态,也就是不管「平台」选win32还是x64,生成时都可以生成win32和x64。在项目上点击右键->【属性】->【配置属性】->【链接器】->【输入】->【附加依赖项】,点击编辑,添加相应库文件。原创 2022-12-09 22:17:58 · 318 阅读 · 0 评论 -
TSF 响应按键 -- 空格键
(1)CCompositionProcessorEngine::IsVirtualKeyNeedpKeyState->Function = FUNCTION_CONVERT;(2)CKeyStateCategory::KeyStateHandlercase FUNCTION_CONVERT: return HandleKeyConvert(dto);(3)CKeyStateCa...原创 2018-03-13 07:49:18 · 455 阅读 · 0 评论 -
VS2017 DLL 不能正常注册 HRESULT -2147024703 排查
用 VS2017 Community 开发TSF输入法,开发环境是 Win10 X64。编译好的 DLL 在本机可以安装(注),但是在其他机器(Win8.1 X64,Win7 X64)上都报错: 无法注册模块 xxxx\xxx.dll。HRESULT -2147220473采用 Dependency Walker 查看这个 DLL,发现几乎全部是红的(不完整)。注:使用 Visual Studio...原创 2018-03-31 10:22:55 · 6005 阅读 · 1 评论 -
vs2017 -> vs2012
vs2017 上的工程,转移到 vs2012 上编译,有以下问题:(0)报错 项目文件包含 ToolsVersion="15.0" 设置, 解决办法:工程属性-》常规-》平台工具集(1)报错 Need to include strsafe.h after tchar.h,解决办法:在 stdafx.h 里最后加上 include 。(2)提示不可在类中初始化。vs2017 中不提示也不原创 2018-04-02 21:16:04 · 1807 阅读 · 0 评论 -
LINK : fatal error LNK1295: “/OPT:NOREF”与“/LTCG:incremental”规范不兼容;链接时不使用“/LTCG:incremental”
参见 https://blog.csdn.net/hejjunlin/article/details/68921811 这个方法无效。解决办法:项目属性-》链接器-》常规-》启用增量链接-》是项目属性-》链接器-》优化-》引用-》是...原创 2018-03-27 22:25:01 · 11040 阅读 · 4 评论 -
微软输入法TSF SampleIME 代码浅说
微软提供了一个简单的TSF拼音输入法的示例SampleIME,主要的问题是:不支持数字键选候选字,不能自动上屏,没有联想功能。在笔者开发动态输入法Windows版时,以其为蓝本,主要针对上面几个问题进行了改造:支持数字键选,支持自动上屏,支持联想。下面从应用的角度对SmapleIME源代码进行解说,看看从按键到汉字上屏这个过程都发生了什么。SampleIME 的源代码结构SampleIME...原创 2018-08-28 23:43:00 · 4899 阅读 · 1 评论 -
error C2220: 警告被视为错误 - 没有生成“object”文件
error C2220: 警告被视为错误 - 没有生成“object”文件右击选择属性->配置属性->c/c++->常规,将“警告视为错误”的选项改为“否”。https://www.cnblogs.com/kex1n/archive/2011/10/19/2217266.html...原创 2018-03-04 13:54:51 · 695 阅读 · 0 评论 -
再论 TSF 响应按键
[1] CCompositionProcessorEngine::GetReadingStrings[2] CSampleIME::_HandleCompositionInputWorker[3] CSampleIME::_HandleCompositionInput[4] CSampleIME::_HandleCompositionBackspace[5] CComp原创 2018-01-06 13:59:24 · 363 阅读 · 0 评论 -
读取带有NaN标记的数据格式
1. 概述Matlab MappingTools 打包了全球地图数据,从中抽取政区界限、海岸线经纬坐标数据,并保存为文本格式,但其中含有大量的 NaN 标记(注:地图数据的抽取方法将有专文记录)。NaN 意为 Not a Number,可在描绘地图的时候起到分隔轮廓线的作用。数据示例 theData.txt: -16.1080 13.1665 -16.5489 13.165原创 2006-03-21 21:54:00 · 1918 阅读 · 2 评论 -
使用 CFile 来读取特定格式的数据
1. 概述使用 fstream 进行文件读写似乎显得与 MFC 格格不入,主要是因为 > 运算符号的使用。我的认识也许是错误的。这里给出用 CFile 来读取特定格式的文件的方法。文件中包括任意的注释行、空行和字符串行,要实现的功能是要跳过注释和空行,把所有的字符串读入一个 CString 数组中。注释行以指定的字符开头,例如“#”。空行特征: /n/r注释行特征: /n#..原创 2006-03-22 22:04:00 · 4041 阅读 · 0 评论 -
读文件
1. 概述读文件是 MFC 应用程序最基本的功能,本文记录如何使用 ifstream 从一个文件中读取数据。2. 头文件#include "ifstream.h"3.可重用代码fstream _In("data.txt",ios::in);_In >> Data1 >> Data2;..._In.close();4. 说明关于指定打开文件的方式:ios i原创 2006-03-20 22:36:00 · 1350 阅读 · 0 评论 -
TSF 响应按键
CStringRange 是一个没有/0结尾的字符串类型。用 .Set() 赋值,.Get() 取值,还可以 .GetLength()。CCompositionProcessorEngine 是一个响应按键的类。它有一个成员: CStringRange _keysrokeBuffer,当按键后,首先改变 _keystrokeBuffer ,然后在 GetCandidateList() 里用原创 2017-10-17 18:26:21 · 360 阅读 · 0 评论 -
TSF 如何更新候选字和拼写文本
class CCompositionProcessorEngine { CStringRange _keystrokeBuffer; void CCompositionProcessorEngine::GetCandidateList(_Inout_ CSampleImeArray *pCandidateList, BOOL isIncrementalWordSearch, BOOL isW原创 2017-12-10 22:56:50 · 464 阅读 · 0 评论 -
如何获取控制台输出
参考:https://www.cnblogs.com/acloud/archive/2012/08/30/2663395.html原创 2017-12-12 08:54:40 · 3037 阅读 · 0 评论 -
C++ 调用 java 创建对象
【1】http://www.ccidnet.com/2005/0413/237901.shtml【2】http://public0821.iteye.com/blog/423941原创 2017-12-13 21:57:53 · 457 阅读 · 0 评论 -
C++ 基础知识
【1】关于:CString -> char * string 等等。http://blog.csdn.net/flydream0/article/details/8543525/【2】原创 2017-12-17 23:27:32 · 164 阅读 · 0 评论 -
字符类数据类型汇总
字符:以下数据类型用于定义字符变量:char 字符,一般占用1个字节,取值是 0~127,和整型是等价的。wchar_t 宽字符,占用2个或4个字节,根据系统的差别而不同。字符变量可用字符常量来赋值,也可以用整数来赋值。字符常量:用单引号括起来的一个字符,或转义字符,例如:'a' '\n' '\u4E90'。如果一个字符常量前用L来修饰,表原创 2018-01-01 12:47:19 · 6455 阅读 · 0 评论 -
写文件
1. 概述写文件是 MFC 应用程序最基本的功能,本文记录了如何使用 fstream 来写文件,并用 ios 指定打开文件的方式。2. 头文件#include "fstream.h"3.可重用代码fstream _Out("data.txt",ios::out);_Out ..._Out.close();4. 说明关于iosios 指定打开文件的方式,有如下几种。如原创 2006-03-20 22:00:00 · 1546 阅读 · 1 评论