我遇到过一种我知道代码的情况
我在Visual Studio 2008中创建了一个MFC应用程序,它生成一个托盘图标和一些通知.我已经阅读过,我可以使用与NOTIFYICONDATAWindows XP 不同的结构,通过设置cbSize结构的属性来初始化它.我还读过,我可以LoadIconMetric在Windows Vista中使用加载我的通知图标,而在Windows XP中,我无法使用该功能,我必须使用LoadIcon.
在我的应用程序中,我设置了以下内容:
#ifndef WINVER
#define WINVER 0x0600 // Vista
#endif
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600 // Vista
#end#if
#ifndef _WIN32_WINDOWS
#define _WIN32_WINDOWS 0x0600 // Vista
#endif
#ifndef _WIN32_IE
#define _WIN32_IE 0x0700
#endif
Run Code Online (Sandbox Code Playgroud)
我正在Visual Studio 2008中的Windows 7 x64计算机上编译和链接Windows 7 SDK.我对WindowsVista或更高版本的测试看起来像这样(直接来自MSDN):
static BOOL IsWinVistaOrLater()
{
// Initialize the OSVERSIONINFOEX structure.
OSVERSIONINFOEX osvi;
ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
osvi.dwMajorVersion = 6;
osvi.dwMinorVersion = 1;
// Initialize the condition …Run Code Online (Sandbox Code Playgroud) 我的应用程序曾经使用过MFC CEdit控件,我们对宽字符(Unicode)字符串没有任何问题.切换到CRichEditCtrl后,似乎不再支持Unicode.汉字变成"??" 等等.我已经读过CRichEditCtrl在引擎盖下使用RichEdit*并且我已经玩过尝试投射指针,但没有任何效果.
我认为它可能是字体,但我当然可以使用ALT键方法将Unicode写入控件,只要将它们保存到模型中并写回,它们就是"????".
某个地方是否有隐藏属性,在初始化启用Unicode的对话框时我必须做一些手动设置?
我想为我的应用程序创建一个对话框,显示一条消息并显示标准的红色圆圈,中间是白色的"x"; 在我看来,这是一个非常标准的Windows对话框.我对MFC有些新意,所以除了创建对话框资源,从microsoft的最佳实践页面复制红色x的图像,包括作为对话框项目,我不知道是否还有一个快捷方式.然后编码我自己的.当然有更标准的方法来做到这一点?
使用Visual Studio时,我至少可以通过以下三种方式编写容器遍历.哪种方式更可取?假设:
vector<CString> strings1;
Run Code Online (Sandbox Code Playgroud)
方法1(使用for_each带有lambda 的算法:
for_each(strings1.begin(), strings1.end(), [](CString s){
_tprintf(_T("%s"), s);
}
Run Code Online (Sandbox Code Playgroud)
方法2(使用for each, in,特定于microsoft):
for each(auto s in strings1)
{
_tprintf(_T("%s"), s);
}
Run Code Online (Sandbox Code Playgroud)
方法3(使用数组语法处理向量):
for (int i=0; i<v.size(); ++i)
{
_tprintf(_T("%s"), v[i]);
}
Run Code Online (Sandbox Code Playgroud)
我知道方法2不可移植,但我不在乎便携.这只需要在Windows中工作.
我想在我的C#应用程序中嵌入一个特定于平台的清单文件.有没有一种简单的方法在Visual Studio 2008中执行此操作而不使用在构建完成后调用的某些外部脚本?
在创建C#应用程序时,"应用程序"选项卡的配置和平台下拉列表已禁用,这使我无法选择要嵌入到该应用程序的体系结构或配置特定清单.我被迫在整个应用程序中使用一个清单.
我想过使用Post Build事件调用一个小脚$(Configuration)本来嵌入基于宏变量的正确清单,并且它可以工作,但是我想这样做而不需要调用其他脚本而我想知道是否可以做不使用构建事件.
我可以将x86和x64程序集引用嵌入到同一个清单文件中,运行时只会加载正确的文件吗?
我遵循了Chris Hanson 关于在Xcode 3.1中调试框架单元测试的建议,但是当试图运行自定义可执行文件时,程序崩溃,说明以下错误消息[替换$(BUILD_PRODUCTS_DIR)以获取构建产品的真实位置].
2009-03-02 19:56:03.414 otest[28059:10b] Error loading
$(BUILD_PRODUCTS_DIR)/Debug/Unit Tests.octest/
Contents/MacOS/Unit Tests: dlopen($(BUILD_PRODUCTS_DIR_)/Unit
Tests.octest/Contents/MacOS/Unit Tests, 265):
no suitable image found. Did find:
$(BUILD_PRODUCTS_DIR)/Unit Tests.octest/Contents/MacOS/Unit Tests:
mach-o, but wrong architecture
2009-03-02 19:56:03.561 otest[28059:10b] The test bundle at
$(BUILD_PRODUCTS_DIR)/Unit Tests.octest could not be loaded because
it is built for a different architecture than the currently-running
test rig (which is running as unknown).
2009-03-02 19:56:03.568 otest[28060:203] *** NSTask: Task create for path
'$(BUILD_PRODUCTS_DIR)/Unit Tests.octest/Contents/MacOS/Unit Tests'
failed: 8, "Exec format error". …Run Code Online (Sandbox Code Playgroud) 该os.walk文档(http://docs.python.org/library/os.html?突显= os.walk#os.walk),说我可以跳过通过从目录列表中删除它们不需要遍历目录.来自文档的明确示例:
import os
from os.path import join, getsize
for root, dirs, files in os.walk('python/Lib/email'):
print root, "consumes",
print sum(getsize(join(root, name)) for name in files),
print "bytes in", len(files), "non-directory files"
if 'CVS' in dirs:
dirs.remove('CVS') # don't visit CVS directories
Run Code Online (Sandbox Code Playgroud)
我看到不同的行为(使用ActivePython 2.6.2).即代码:
>>> for root,dirs,files in os.walk(baseline):
... if root.endswith(baseline):
... for d in dirs:
... print "DIR: %s" % d
... if not d.startswith("keep_"):
... print "Removing %s\\%s" % (root,d)
... dirs.remove(d)
...
... …Run Code Online (Sandbox Code Playgroud)