在我的项目上构建的部分帖子是我为测试主应用程序而编写的程序的执行.不幸的是,visual studio中的post构建过程会锁定等待可执行文件退出.所以,我不得不关闭我的测试程序,以便完成后期构建过程并运行我的应用程序.如何更改此值,以便VS在启动之前不等待程序返回?谢谢.
Inno安装程序无法在卸载期间删除组件,因为我的程序仍在运行,并且无法删除可执行文件.在允许卸载之前,如何检查它是否正在运行?
我写了一个绘图功能,绘制各种屏幕上的精灵.这些精灵只能重叠到一个点.如果它们有很多重叠,它们会变得太模糊.因此,我需要检测这些精灵何时重叠太多.幸运的是,问题被简化,因为精灵可以被视为正交矩形.我想知道这些矩形重叠多少.现在,我只是通过测试一个矩形中的每个像素来强制它,以查看另一个矩形是否包含它.我计算这些并计算重叠百分比.我认为这可能是一种更好,更少蛮力的方法.我可以使用什么算法来确定这个?
我正在使用wxwidgets.
我的程序有一个永远不会改变的变量.然而,不知何故,它正在改变.有没有办法让修改器在修改特定成员变量时停止?
我有一个需要在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文件,所以我无法理解为什么它会搞乱.有帮助吗?我尝试了很多变种,但没有运气.
我有一些代码弹出气球提示.它适用于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不显示消息?
好的,我有一个想要淡入淡出的控件(持续).为了淡化它,我在绘图程序中调整控件的透明度值.所以我设置了一个运行的计时器,我调整了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),但我无法想出一个更干净的方法,然后测试一切.有没有更简单的方法?
我有一个有网格的控件.每次使用设备上下文类中的绘制线函数绘制构成网格的水平和垂直线是否更昂贵,或者将网格绘制一次到内存设备上下文然后再次将其blit更快窗口直流?谢谢.
我的班级有这个成员.
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)