我不确定我在这里做错了什么.我正在尝试使用MFC实现调整大小对话框窗口.代码非常简单.我重写以下大小调整通知:
void CMyDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
//...
//First move the groupbox, pGroupbox is of type CWnd
pGroupbox->MoveWindow(rcGroupbox);
//And then move all radio buttons in it
//Each is moved the exact same way
//pEachRadioButton is of type CWnd
pEachRadioButton->MoveWindow(rcEachRadioButton);
}
Run Code Online (Sandbox Code Playgroud)
但是我得到的结果就是这个.
首先是这里的初始组框:

只有当我开始向下拖动主窗口框架的底部时才会发生这种情况.我得到这个神器:

请注意,单选按钮位置本身是正确的.如果我将鼠标移动到其中任何一个上,它会正确地重绘(就像这个"关闭"按钮):

这是对话框本身的布局:
IDD_MY_DIALOG DIALOGEX 0, 0, 437, 190
STYLE DS_SETFONT | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU …Run Code Online (Sandbox Code Playgroud) 我正在使用 Visual Studio 2010 编写 C++/MFC 应用程序,我需要维护一个running total用于计算平均传输率的累积值,如下所示:
//Let's assume that INT128 is a 128-bit integer type
static INT128 iRunningTotal = 0;
static INT128 iCounter = 0;
LONGLONG iteration_get_current_average(LONGLONG iRate)
{
//May be called repeatedly...
iRunningTotal += iRate;
iCounter++;
//Calculate the current average
return iRunningTotal / iCounter;
}
Run Code Online (Sandbox Code Playgroud)
我搜索了C++ 128-bit integer几乎所有人们建议使用 Boost 库的地方。嗯,这是一种可能性,但我不熟悉它,也不会在我的项目中的其他任何地方使用它。
所以除了 Boost,我很好奇,有没有办法用纯 C/C++ 做到这一点?
为了我的目的,我需要知道的是驱动器的 DOS 路径的 BitLocker 加密状态。像这样的东西:
enum DriveEncryptionStatus{
Unprotected,
Protected,
Unknown
};
DriveEncryptionStatus = GetDriveBitlockerEncryptionStatus(L"C:\\");
Run Code Online (Sandbox Code Playgroud)
我能够找到Win32_EncryptableVolume类,不幸的是,这个警告伴随着:
要使用 Win32_EncryptableVolume 方法,必须满足以下条件: 您必须具有管理员权限。
知道如何在不以管理员身份运行的情况下执行此操作吗?
在我的 Chrome 扩展程序中,我将内容脚本注入到IFRAMEs页面内的所有内容中。这是manifest.json文件的一部分:
"content_scripts": [
{
"run_at": "document_end",
"all_frames" : true,
"match_about_blank": true,
"matches": ["http://*/*", "https://*/*"],
"js": ["content.js"]
}
],
Run Code Online (Sandbox Code Playgroud)
因此,具有多个的单个网页IFRAMEs最终将运行我注入的content.js.
内部的逻辑content.js从IFRAME它注入的每个页面或从主/首页收集数据,并将其发送回后台脚本(使用chrome.runtime.sendMessage.)。后台脚本反过来需要将数据存储在全局变量中,稍后使用在扩展本身。
我面临的问题是应用程序需要区分从多个接收到的“数据” IFRAMEs,因为我的数据收集方法可以在用户与页面交互时重复调用,因此我不能简单地“转储”接收到的数据将后台脚本转换为数组。相反,我需要使用dictionary-type 数据存储。
我可以IFRAME通过运行以下命令来判断数据是来自首页还是来自首页:
//From the `content.js`
var isIframe = window != window.top;
Run Code Online (Sandbox Code Playgroud)
我的想法是,如果我收集每个页面的 URL,IFRAME那么我应该能够将其用作唯一键,将数据存储在我的字典类型全局变量中:
//Again from content.js
var strUniqueIFrameURL = document.URL;
Run Code Online (Sandbox Code Playgroud)
好吧,那是行不通的,因为两个或多个IFRAMEs可以具有相同的 URL。
所以我最初的问题是——如何 …
有没有办法从我的 Google Chrome 扩展程序中检索所有可用翻译的列表?
例如,我的应用程序可能包含以下文件夹:
_locales\en\messages.json
_locales\fr\messages.json
_locales\es\messages.json
Run Code Online (Sandbox Code Playgroud)
有没有办法从扩展本身中知道它是en、fr、 和?es
第二个问题,有没有办法将特定messages.json文件解析为 JSON 数据?我的意思是比chrome.i18n.getMessage().
javascript google-chrome internationalization google-chrome-extension
我正在尝试为我的网站生成Google身份验证器应用的QR码(用于双因素身份验证用户登录.)我按照此指南生成URI(使用Google Chart API.)
所以我编写了这个网址:
创建了QR码(来自上面的链接.)
但是,当我使用适用于我的iPhone 的Google身份验证器应用程序进行扫描时,我所获得的行不显示发布者(在此屏幕截图中用红色圈出),就像其他服务一样 - 请参阅其他条目中的Google:

那么我错过了什么参数?
我似乎无法找到一个有效的解决方案,当用户在键盘上点击ESC后,如何阻止基于对话框的MFC应用程序关闭.我一直在寻找代码,人们只是覆盖PreTranslateMessage通知并阻止所有WM_KEYDOWN消息VK_ESCAPE,但这对我不起作用,因为这种方法会阻止应用程序中的所有 ESC按键.因此,例如,当用户打开下拉列表并想要使用ESC键关闭它时,它也将被阻止.或者,如果某人打开弹出菜单或日期时间/日历控件并尝试使用ESC键击等来解除它,也会发生同样的情况.
所以我的问题是,如何防止ESC键击后我的对话框关闭?
我在用户模式进程中运行以下代码片段,当Windows用户帐户登录到工作站时启动.或者,换句话说,其路径放在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run注册表项中.
该代码应该确定我的用户进程的强制完整性级别.它是这样的:
DWORD getMIL()
{
//Try to get integrity level
//-1 Unknown
//SECURITY_MANDATORY_UNTRUSTED_RID 0x00000000 Untrusted.
//SECURITY_MANDATORY_LOW_RID 0x00001000 Low integrity.
//SECURITY_MANDATORY_MEDIUM_RID 0x00002000 Medium integrity.
//SECURITY_MANDATORY_MEDIUM_PLUS_RID SECURITY_MANDATORY_MEDIUM_RID + 0x100 Medium high integrity.
//SECURITY_MANDATORY_HIGH_RID 0X00003000 High integrity.
//SECURITY_MANDATORY_SYSTEM_RID 0x00004000 System integrity.
//SECURITY_MANDATORY_PROTECTED_PROCESS_RID 0x00005000 Protected process.
DWORD dwIntgtyLvl = -1;
HANDLE hToken;
if(OpenProcessToken(::GetCurrentProcess(), TOKEN_QUERY, &hToken))
{
DWORD dwSizeIntgtyLvl = 0;
if(!GetTokenInformation(hToken, TokenIntegrityLevel, NULL, dwSizeIntgtyLvl, &dwSizeIntgtyLvl) &&
::GetLastError() == ERROR_INSUFFICIENT_BUFFER)
{
BYTE* pbIntgtyLvl = new BYTE[dwSizeIntgtyLvl];
if(pbIntgtyLvl)
{
TOKEN_MANDATORY_LABEL* pTML = …Run Code Online (Sandbox Code Playgroud) 说,如果我首先执行以下操作来使用 SQLite3 数据库创建一个表:
CREATE TABLE `t3` (
`f0` INTEGER PRIMARY KEY AUTOINCREMENT,
`f1` INTEGER NOT NULL REFERENCES `t2`(`f0`) ON DELETE CASCADE,
`f2` INTEGER NOT NULL REFERENCES `t1`(`f0`) ON DELETE CASCADE,
`f3` INTEGER NOT NULL,
`f4` BLOB,
`f5` BLOB,
`f6` BLOB,
`f7` BLOB,
`f8` BLOB,
`f9` BLOB,
`fa` BLOB)
Run Code Online (Sandbox Code Playgroud)
然后在该表上创建一个索引:
CREATE INDEX `it31` ON `t3`(`f1`)
Run Code Online (Sandbox Code Playgroud)
所以在这个表插入了一些行之后,如果我通过执行以下操作将其删除:
DROP TABLE `t3`
Run Code Online (Sandbox Code Playgroud)
它是否也删除了it31索引,还是我需要在删除表之前删除索引?
我试图按照Microsoft的“百年纪念项目”指示将我的应用程序的MSI安装程序转换为UWP,但遇到此错误MakeAppx.exe:
这个Windows 10不是我的开发机器。所以我出去下载Windows 10 SDK,但是现在我很好奇SDK的“一部分” MakeAppx.exe位于什么位置?还是真的需要为此下载并安装2.3 GB?
c++ ×5
winapi ×4
windows ×4
mfc ×3
dialog ×2
javascript ×2
c ×1
encryption ×1
google-oauth ×1
iframe ×1
kernel32 ×1
modal-dialog ×1
oauth ×1
sqlite ×1
uwp ×1
visual-c++ ×1