显示模态到取消模态,所有者窗口显示会“闪烁”的原因:
当销毁模态对话框时,这个对话框刚好是拥有前台焦点的窗口。现在,窗口管理器需要找到其它的窗口并把前台焦点交给这个窗口。窗口管理器会首先试着把前台焦点交给对话框的所有者窗口,但此时这个窗口却是“禁用”的,因此窗口管理器跳过所有者窗口,并继续查找其他没有被禁用的窗口。
因此,销毁模态对话框的正确顺序是:
1、重新激活所有者窗口
2、销毁模态对话框
显示模态到取消模态,所有者窗口显示会“闪烁”的原因:
当销毁模态对话框时,这个对话框刚好是拥有前台焦点的窗口。现在,窗口管理器需要找到其它的窗口并把前台焦点交给这个窗口。窗口管理器会首先试着把前台焦点交给对话框的所有者窗口,但此时这个窗口却是“禁用”的,因此窗口管理器跳过所有者窗口,并继续查找其他没有被禁用的窗口。
因此,销毁模态对话框的正确顺序是:
1、重新激活所有者窗口
2、销毁模态对话框
什么是绘制实心矩形最好的方式
老一辈的程序员可能会告诉你”ExtTextOut”,性能最优。
TextOut在输出文字时,为什么有些难看的方块?
IMLangFontLink2::GetStrCodePages方法将字符串分解成许多”块“(chunk),并且在每个块中的所有字符都可以用相同的字体来显示,此外还可以通过IMLangFontLink2::MapFont来创建字体。
#include <mlang.h> HRESULT TextOutFL(HDC hdc, int x, int y, LPCWSTR psz, int cch) { ... while (cch > 0) { DWORD dwActualCodePages; long cchActual; pfl->GetStrCodePages(psz, cch, 0, &dwActualCodePages, &cchActual); HFONT hfLinked; pfl->MapFont(hdc, dwActualCodePages, 0, &hfLinked); HFONT hfOrig = SelectFont(hdc, hfLinked); TextOut(hdc, ?, ?, psz, cchActual); SelectFont(hdc, hfOrig); pfl->ReleaseFont(hfLinked); psz += cchActual; cch -= cchActual; } ... }
下一步,应该确定每次TextOut的位置
SetTextAlign(hdc, GetTextAlign(hdc) | TA_UPDATECP); MoveToEx(hdc, x, y, NULL);
最后,在处理从右到左(right-to-left)的语言时,IMLangFontLink2接口来将字符串分解为块,将会失败。
以下代码应该是windows文本输出的终极方案
#inlucde <usp10.h> HRESULT TextOutUniscribe(HDC hdc, int x, int y, LPCWSTR psz, int cch) { if (cch == 0) return S_OK; SCRIPT_STRING_ANALYSIS ssa; HRESULT hr = ScriptStringAnalyse(hdc, psz, cch, 0, -1, SSA_FALLBACK | SSA_GLYPHS, MAXLONG, NULL, NULL, NULL, NULL, NULL, &ssa); if (SUCCESS(hr)) { hr = ScriptString(ssa, x, y, 0, NULL, 0, 0, FALSE); ScriptStringFree(&ssa); } return hr; }
1、关于资源:提供1x,2x……等多套资源
2、资源的使用规则:<150%,使用1x资源;<250%,使用2x资源;<350%,使用3x资源,以此类推
3、如果没有2x,3x资源,使用1x资源等比放大;所有配置数据,跟随倍率等比放大
4、背景显示大小,按缩放倍率平滑放大。即放大为125时,destSize = sourceSize * 125%
5、文字显示大写与上条规则相同
===========================
图片初始化规则:
1、如果缩放倍率发生了更改,判断是否需要重新载入资源
2、判断是否需要重新创建显示缓存
sudo apt-get install libssl-dev
sudo apt-get install libglib2.0-dev
sudo apt-get install librsvg2-dev
sudo apt-get install libdbus-1-dev
sudo apt-get install sudo apt-get install libqt5svg5-dev
sudo apt-get install sudo apt-get install libgsettings-qt-dev
sudo apt-get install sudo qttools5-dev
sudo apt-get install fcitx fcitx-libs-dev libxtst-dev devscripts debhelper
sudo apt-get install libgsettings-qt-dev
sudo apt-get install qtdeclarative5-dev qml-module-qtquick-controls
Failed to find “GL/gl.h”
sudo apt-get install mesa-common-dev libglu1-mesa-dev
替换
#include “fcitx-qt/fcitxqtformattedpreedit.h”
为
#include “FcitxQtDBusAddons/fcitxqtformattedpreedit.h”
Inlucde目录添加
/usr/include/FcitxQt5/
打包相关的错误:
debuild找不到:
sudo apt-get install devscripts build-essential lintian
rpm找不到
sudo apt-get install rpm
eu-strip: command not found
apt-get install elfutils
编辑:/etc/ld.so.conf 修改后需要 ldconfig
cmake -DCMAKE_TOOLCHAIN_FILE=$cross_chain_tool_file -DCMAKE_PREFIX_PATH=/lib/x86_64-linux-gnu/cmake/Qt5 -DLD_LIBRARY_PATH=/lib/x86_64-linux-gnu -DUSE_VOICE=ON -DUSEQT5=ON ../../
挂载vmware设置的共享目录: sudo vmhgfs-fuse .host:/ /mnt/hgfs -o nonempty -o allow_other
SSH GIT
1、生成:$ ssh-keygen -t rsa -C “your_email@example.com”
2、添加:ssh-add ~/.ssh/id_rsa
3、复制:~/ssh/id_rsa.pub 到gerrit或github账户中添加
GIT 保存密码 全局用户名等
git config credential.helper store git config --global credential.helper store git config --global user.name "github's Name" git config --global user.email "github@xx.com" git config --list