小编phi*_*son的帖子

GetMessage失败会发生什么?

如果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)

c++ winapi

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

表单应该包含一个对象,还是一个包含该表单的对象?

假设我只有一个项目的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)

c# winforms

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

我如何使用安全的strcpy_s函数?

我正在尝试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)

这似乎有用,但我想知道是否有更好的方法来做到这一点.

c c++

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

标签 统计

c++ ×2

c ×1

c# ×1

winapi ×1

winforms ×1