如果GetMessage(...)失败,消息是否从消息队列中删除?我问,因为当我有以下循环时,我最终会进入一个无限循环,试图反复处理同一个消息:
while( GetMessage( &msg, NULL, WM_SPEVENT, WM_SPUUIEVENT ))
{
//Do something with my message. (Translate + dispatch perhaps, if I wanted)
}
Run Code Online (Sandbox Code Playgroud)
因为我没有处理GetMessage失败的情况,循环会不会一遍又一遍地停留在同一个消息上?这是为什么以下是实现循环的正确方法?:
while( (bRet = GetMessage( &msg, NULL, WM_SPEVENT, WM_SPUUIEVENT )) != 0)
{
if (bRet == -1)
{
//
}
else
{
//Do something with my message
}
}
Run Code Online (Sandbox Code Playgroud) 假设我只有一个项目的Windows窗体.如果我有另一个用于发出HTTP请求和处理数据的类,我应该使用哪个解决方案?
public class MyForm: Form
{
private MyObject myObject;
}
Run Code Online (Sandbox Code Playgroud)
或这个:
public class MyObject
{
private MyForm myForm;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试strcpy更安全地更新呼叫strcpy_s.旧函数调用如下所示:
char buf[6];
strcpy(buf+1, "%#c");
Run Code Online (Sandbox Code Playgroud)
为了将上面的代码转换为更安全的版本,我会为size参数添加什么?
char buf[6];
strcpy_s(buf+1, /*SIZE GOES HERE*/, "%#c");
Run Code Online (Sandbox Code Playgroud)
我想我buf+1对代码部分感到困惑.这实际上只是一个指向寄存器ONE块的指针buf吗?如果是这样,我会为SIZE参数添加strcpy_s什么?我试过了:
strcpy_s(buf+1, sizeof(buf+1), "%#c");
Run Code Online (Sandbox Code Playgroud)
这似乎有用,但我想知道是否有更好的方法来做到这一点.