小编max*_*max的帖子

Visual Studio后期构建事件在调试模式下运行应用程序之前等待可执行文件完成

在我的项目上构建的部分帖子是我为测试主应用程序而编写的程序的执行.不幸的是,visual studio中的post构建过程会锁定等待可执行文件退出.所以,我不得不关闭我的测试程序,以便完成后期构建过程并运行我的应用程序.如何更改此值,以便VS在启动之前不等待程序返回?谢谢.

build-process visual-studio

26
推荐指数
3
解决办法
6288
查看次数

卸载失败,因为程序正在运行.在尝试删除之前,如何让Inno Setup检查运行过程?

Inno安装程序无法在卸载期间删除组件,因为我的程序仍在运行,并且无法删除可执行文件.在允许卸载之前,如何检查它是否正在运行?

inno-setup

23
推荐指数
4
解决办法
2万
查看次数

如何计算两个矩形的重叠百分比?

我写了一个绘图功能,绘制各种屏幕上的精灵.这些精灵只能重叠到一个点.如果它们有很多重叠,它们会变得太模糊.因此,我需要检测这些精灵何时重叠太多.幸运的是,问题被简化,因为精灵可以被视为正交矩形.我想知道这些矩形重叠多少.现在,我只是通过测试一个矩形中的每个像素来强制它,以查看另一个矩形是否包含它.我计算这些并计算重叠百分比.我认为这可能是一种更好,更少蛮力的方法.我可以使用什么算法来确定这个?

我正在使用wxwidgets.

c++ algorithm math wxwidgets

9
推荐指数
1
解决办法
3559
查看次数

Visual Studio:如何在修改成员变量时停止调试器?

我的程序有一个永远不会改变的变量.然而,不知何故,它正在改变.有没有办法让修改器在修改特定成员变量时停止?

c++ windows visual-studio

8
推荐指数
1
解决办法
4616
查看次数

运行时检查失败#0从kernel32.dll加载QueryFullProcessImageName

我有一个需要在WinXP和Vista64上运行的应用程序.我的程序需要QueryFullProcessImageName()才能在Vista上运行,但不能在XP上运行.

我尝试通过kernel32.dll加载QueryFullProcessImageName()(而不是静态链接),以便在WinXP和Vista上运行相同的可执行文件.加载它的代码是:

//only gets called on vista
bool LoadQueryFullProcessImageName()
{
  HMODULE hDLL = LoadLibrary("kernel32.dll");
  if (!hDLL) return(0);

  //Now use pointer to get access to functions defined in DLL
  fpQueryFullProcessImageName = (LPQueryFullProcessImageName)GetProcAddress(hDLL, "QueryFullProcessImageNameA"); //ANSI version
  if (!fpQueryFullProcessImageName) 
     return false;

  return true;
}
Run Code Online (Sandbox Code Playgroud)

typedef是

typedef WINBASEAPI
BOOL (*LPQueryFullProcessImageName)(
    __in HANDLE hProcess,
    __in DWORD dwFlags,
    __out_ecount_part(*lpdwSize, *lpdwSize) LPSTR lpExeName,
    __inout PDWORD lpdwSize
    );
Run Code Online (Sandbox Code Playgroud)

不幸的是,当取消引用函数指针时,我在Vista上遇到运行时错误:

运行时检查失败#0 - ESP的值未在函数调用中正确保存.这通常是调用使用一个调用约定声明的函数和使用不同调用约定声明的函数指针的结果.

typedef直接来自.h文件,所以我无法理解为什么它会搞乱.有帮助吗?我尝试了很多变种,但没有运气.

c++ winapi function-pointers windows-vista

7
推荐指数
1
解决办法
6523
查看次数

使用Shell_NotifyIcon的气球工具提示适用于Vista,但不适用于XP

我有一些代码弹出气球提示.它适用于Vista但不适用于Windows XP.到目前为止这是代码.它适用于Vista但不适用于XP.我不明白为什么.此版本不会加载图标,因此它将显示为空白.

memset(&m_notifyData, 0, sizeof(NOTIFYICONDATA));
m_notifyData.cbSize = sizeof(NOTIFYICONDATA);
m_notifyData.uFlags = NIF_INFO | NIF_MESSAGE;
m_notifyData.hWnd = (HWND) m_preference_window->GetHWND();
m_notifyData.uID = 99;
m_notifyData.uTimeout = timeout;
m_notifyData.dwInfoFlags = NIIF_NOSOUND | NIIF_INFO;

wxStrncpy(m_notifyData.szInfo, message.c_str(), WXSIZEOF(m_notifyData.szInfo));
wxStrncpy(m_notifyData.szInfoTitle, title.c_str(),WXSIZEOF(m_notifyData.szInfoTitle));

Shell_NotifyIcon(NIM_ADD, &m_notifyData);

wxLogMessage("Balloon timeout is %i", timeout);
m_timer_balloon->Start(timeout, true);
Run Code Online (Sandbox Code Playgroud)

当时间运行时,执行:

Shell_NotifyIcon(NIM_DELETE, &m_notifyData);
Run Code Online (Sandbox Code Playgroud)

任何想法为什么XP不显示消息?

winapi windows-xp

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

给定开始,结束和增量值,我想要一个向上和向下计数的算法

好的,我有一个想要淡入淡出的控件(持续).为了淡化它,我在绘图程序中调整控件的透明度值.所以我设置了一个运行的计时器,我调整了m_transparency成员.计时器运行,它应该在两个定义的值m_start,m_end之间来回扫描.这些可以是0-255.

例如.开始30,结束55,增量值= 5.它看起来像:

30,35,40,45,55,50,45,40,35,30,35,40 .......

也应该处理开始55,结束30.

无论如何,我写了一个可怕的功能,基本上测试每个条件(我上下移动,我到达开始,结束,转身点等).它很难看,我很尴尬(三重嵌套ifs),但我无法想出一个更干净的方法,然后测试一切.有没有更简单的方法?

c c++ algorithm

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

dc-> DrawLine()一堆或一个blit是不是更便宜?

我有一个有网格的控件.每次使用设备上下文类中的绘制线函数绘制构成网格的水平和垂直线是否更昂贵,或者将网格绘制一次到内存设备上下文然后再次将其blit更快窗口直流?谢谢.

c++ graphics winapi gdi

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

Std :: vector初始化为垃圾.奇怪的行为.关于什么事情的任何想法?

我的班级有这个成员.

  std::vector<AvaWrapper> m_controls;
Run Code Online (Sandbox Code Playgroud)

在我的构造函数中,我打电话

  m_controls.clear()
Run Code Online (Sandbox Code Playgroud)

然后我调用一个成员函数再次执行m_controls.clear(),但它会断言一个断言.调试器显示m_controls有50万或更多条目,但它们都不是有效的,因为当我展开树时调试器显示"错误:表达式无法评估".所以,我的直觉是这个类没有正确创建,因为这个代码确实有效,但后来我从这个类派生了一个类,我调用new()来创建父类.它作为基类的新角色正在爆发.但是这个指针显示所有其他成员变量都有有效数据,所以我的预感是错误的.构造函数也被调用了.有任何想法吗?谢谢.

UPDATE2:

Train::Train() : SpriteWindowFrame(200)
{
  s_mutexProtectingTheGlobalData = new wxMutex();
  m_window_rect = NULL;
  m_thread = NULL;
  m_ok = false;
  m_accumulate_timer = new wxTimer();
  m_accumulate_timer->SetOwner(this, ACCUMULATE_TIMER_ID);

  m_autohide_timer = new wxTimer();
  m_autohide_timer->SetOwner(this, AUTOHIDE_TIMER_ID);

  m_autohide = false;
  m_autohide_period = 5000;
  m_controls.clear();
}
Run Code Online (Sandbox Code Playgroud)

更新:

//This version works.
SpaceInit::SpaceInit()
{
  //Use INI config store. If you need something else, just
  //create the appropriate object.
  m_config_store = new IniConfigStore();

  //Start up config. 
  Init(); 

  m_t = new Trains();
  return;
}

SpaceInit::~SpaceInit()
{ …
Run Code Online (Sandbox Code Playgroud)

c++ stl vector

0
推荐指数
1
解决办法
900
查看次数