小编Mr.*_*Boy的帖子

将字符串复制到剪贴板,粘贴时只写入一个字符

我是这个代码的基本代码,在我的另一个问题中也提到过.该版本强制使用字符类型char*,这会破坏我的unicode项目的编译.所以我做了以下调整:

void SetClipboardText(CString & szData)
{
    HGLOBAL h;
    LPTSTR arr;

    size_t bytes = (szData.GetLength()+1)*sizeof(TCHAR);
    h=GlobalAlloc(GMEM_MOVEABLE, bytes);
    arr=(LPTSTR)GlobalLock(h);
    ZeroMemory(arr,bytes);
    _tcscpy_s(arr, szData.GetLength()+1, szData);
    szData.ReleaseBuffer();
    GlobalUnlock(h);

    ::OpenClipboard (NULL);
    EmptyClipboard();
    SetClipboardData(CF_TEXT, h);
    CloseClipboard();
}
Run Code Online (Sandbox Code Playgroud)

复制看起来很好 - 在调试器中运行Visual Studio告诉我arr按预期包含复制的字符串.但是当我粘贴到任何应用程序时,只粘贴第一个字符.

出了什么问题?

winapi

2
推荐指数
1
解决办法
1756
查看次数

模板化运算符[] ......可能吗?有用?

你能拥有:

template <class T>
const T &operator[] (unsigned int x)
Run Code Online (Sandbox Code Playgroud)

我的想法是,如果你有map<string,string>一个包装类可以让你做的很好:

obj["IntVal"]="12";
obj["StringVal"]="Test";

int i = obj["IntVal"];
Run Code Online (Sandbox Code Playgroud)

我们实际上可以用C++接近这个?值得痛苦吗?

c++ templates

2
推荐指数
1
解决办法
175
查看次数

HTML5是否仅取代Flash/Silverlight的视频方面?

我看到很多人都在谈论HTML5视频标签如何杀死Flash.虽然视频是Flash/SL中使用最广泛的部分,但它只是其技术能力的一小部分.例如,您可以使用Flex中的完整3D图形和套接字连接编写游戏,以及严肃的业务应用程序等.

是否认为Javascript会杀死Flash/Flex/SL的那些部分?因为虽然现在对于非常丰富的网络应用程序来说这似乎是可行的,但是像任何类型的高性能应用程序如实时图形呢?

apache-flex flash silverlight html5

2
推荐指数
1
解决办法
990
查看次数

在没有主窗口的MFC应用程序中创建多个对话框,它们成为彼此的子对象

(标题更新)继续这个问题,现在我更清楚地了解发生了什么......

我有一个没有主窗口的MFC应用程序,它公开了一个API来创建对话框.当我反复调用其中一些方法时,创建的对话框是彼此的父级,而不是所有对象的父级...我不知道为什么.

但无论如何,即使在创建之后,我也无法将父级更改回NULL或CWnd :: GetDesktopWindow()...如果我调用SetParent后跟GetParent,则没有任何更改.

因此,除了真正奇怪的问题,为什么Windows神奇地将每个对话框与最后创建的对话框相关联,是否有任何我不能将这些窗口设置为桌面的子项?


更新:我找到了所有这些的原因,但不是解决方案.从我的对话框构造函数中,我们最终得到:

BOOL CDialog::CreateIndirect(LPCDLGTEMPLATE lpDialogTemplate, CWnd* pParentWnd,
    void* lpDialogInit, HINSTANCE hInst)
{
    ASSERT(lpDialogTemplate != NULL);

    if (pParentWnd == NULL)
        pParentWnd = AfxGetMainWnd();
    m_lpDialogInit = lpDialogInit;

    return CreateDlgIndirect(lpDialogTemplate, pParentWnd, hInst);
}
Run Code Online (Sandbox Code Playgroud)

注意: if (pParentWnd == NULL)pParentWnd = AfxGetMainWnd();

我的对话框构造函数中的调用堆栈如下所示:

  • mfc80d.dll!CDialog :: CreateIndirect(const DLGTEMPLATE*lpDialogTemplate = 0x005931a8,CWnd*pParentWnd = 0x00000000,void*lpDialogInit = 0x00000000,HINSTANCE__*hInst = 0x00400000)
  • mfc80d.dll!CDialog :: CreateIndirect(void*hDialogTemplate = 0x005931a8,CWnd*pParentWnd = 0x00000000,HINSTANCE__*hInst = 0x00400000)
  • mfc80d.dll!CDialog :: Create(const char*lpszTemplateName = 0x0000009d,CWnd*pParentWnd = 0x00000000)
  • mfc80d.dll!CDialog …

winapi mfc

2
推荐指数
1
解决办法
3593
查看次数

如何停止MFC/win32控件重新绘制

我有一个CRichEditCtrl,一个算法在其内容上就地工作,迭代内容并进行更改.这似乎导致它每次重新绘制,这会导致闪烁和明显的时间来完成操作,特别是如果控件开始滚动.我想知道是否有一种巧妙的方法可以阻止它重新粉刷一段时间.它实际上是一个使用CRichEditCtrl的自定义子类,所以我想的是:

void MyCustomEditCtrl::DoAlgorithm()
{
 enableRepaint(false);
 ...
 //to the actual work
 ...
 enableRepaint(true);
}
Run Code Online (Sandbox Code Playgroud)

什么是最好的方法?一个自定义的on-paint处理程序,在进行操作时什么都不做?或者重新粉刷实际上是禁用?

winapi mfc repaint cricheditctrl

2
推荐指数
1
解决办法
2466
查看次数

是否可以使用CSS圆角并仍然通过验证?

IIRC的情况是,IE根本不支持圆角,但其他一些浏览器需要特定于浏览器的扩展......无论是FF还是网络工具包,我都不记得了.

我很高兴在某些情况下使用它,让IE回落到方角,但使用浏览器扩展CSS中断验证...我非常喜欢让我的网站验证并在IE6上工作.

css standards-compliance

2
推荐指数
1
解决办法
382
查看次数

JIRA:大量版本

JIRA内置了版本信息,看起来非常方便.

但是,在迭代模型中,您可能每两周发布一个新版本,这意味着列表中有很多版本......这些版本功能齐全,但让我觉得有些笨拙.

这是正确的方法,还是有更好的方法来在JIRA中使用版本?

jira

2
推荐指数
1
解决办法
506
查看次数

从 Win32 应用程序将进程作为同步操作运行

我有一个现有的实用程序应用程序,我们称之为 util.exe。这是一个命令行工具,它从命令行获取输入,并在磁盘上创建一个文件,比如说一个图像文件

我想通过运行 util.exe 在另一个应用程序中使用它。但是它需要同步,以便在处理继续时知道文件存在。

例如(伪)

bool CreateImageFile(params)
{
  //ret is util.exe program exit code
  int ret = runprocess("util.exe",params);
  return ret==0;
}
Run Code Online (Sandbox Code Playgroud)

是否有一个 Win32 API 调用将运行该进程并等待它结束?我查看了 CreateProcess 但它在尝试启动时立即返回,我查看了 ShellExecute 但这似乎有点难看,即使它同步的。

winapi spawning visual-c++

2
推荐指数
1
解决办法
2955
查看次数

获得最小化窗口的大小

我从来不知道这一点,但显然:

默认情况下,系统会将最小化窗口缩小到其任务栏按钮的大小,并将最小化窗口移动到任务栏.已恢复的窗口是已返回其先前大小和位置的窗口,即在最小化或最大化之前的大小.

在应用程序中,我们希望在退出时保存各种窗口的位置/大小.这导致最小化窗口的问题.我们的解决方案是在运行保存状态逻辑之前恢复所有窗口,但这看起来很糟糕.有没有更好的办法?

winapi

2
推荐指数
1
解决办法
2413
查看次数

如何修改/替换 Cg 片段着色器中的像素位置?

是否可以使用 Cg 修改片段(像素)着色器中的像素坐标?我确信此类功能在第二代/第三代着色器中可用,但我不知道确切的配置文件或如何做到这一点。

shader cg pixel-shader fragment-shader

2
推荐指数
1
解决办法
5168
查看次数