小编Jim*_*ell的帖子

使用C#扫描人机接口设备(HID)

我正在开发一个C#.NET 2.0应用程序,我需要扫描附加的HID.如何才能做到这一点?因为它是HID,Windows不会为其分配COM端口.我只需要以编程方式确定设备是否已连接.谢谢.

附加信息

当我将USB设备连接到计算机时,设备管理器中的人机接口设备下会显示两个条目.单击其属性会在各自的"详细信息"选项卡中生成此信息:

HID兼容设备 设备实例ID:HID\VID_1795&PID_6004\7&2694D932&0&0000

USB人机接口设备 设备实例ID:USB\VID_1795&PID_6004\B973000000EB0D00

c# device human-interface

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

ExitThread与允许线程函数正常退出 - C++

我的应用程序有一个使用创建的线程CreateThread.ExitThread在所述线程内调用并允许线程正常退出(即到达线程函数的末尾)之间有什么区别?我正在使用C++和Visual Studio 2008.谢谢.

c++ multithreading visual-studio-2008

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

新构造函数引发异常后的对象指针状态 - C++

当新的类构造函数在C++中引发异常时,对象指针的状态是什么?以下面的代码为例:

CMyClass * pobjMyClass = (CMyClass *)0xA5A5A5A5;

try
{
    pobjMyClass = new CMyClass(); // Exception thrown in constructor
}
catch ( ... ) {}
Run Code Online (Sandbox Code Playgroud)

pobjMyClass抛出异常后,当这段代码执行的值是什么时?一个指向一个无效的情况下CMyClass,0xA5A5A5A5,NULL,一些随机初始化值,或其他什么东西?谢谢.

c++ constructor exception visual-studio-2008

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

Win初始化和在Win32 C++ DLL中的使用

我正在编写一个Win32 C++ DLL,它使用COM来查询WMI.如何以编程方式确定COM是否已初始化?谢谢.

c++ com dll visual-studio-2008

5
推荐指数
2
解决办法
4908
查看次数

重新注册用户定义的窗口类 - C++

我从RegisterClassEx下面的代码调用中得到一个类已经存在错误.此代码位于类构造函数中:

this->m_wcx.cbSize = sizeof(WNDCLASSEX);  // size of structure
this->m_wcx.style = CS_HREDRAW | CS_VREDRAW; // initially minimized
this->m_wcx.lpfnWndProc = &WndProc;       // points to window procedure
this->m_wcx.cbClsExtra = 0;               // no extra class memory
this->m_wcx.cbWndExtra = 0;               // no extra window memory
this->m_wcx.hInstance = m_hInstance;      // handle to instance
this->m_wcx.hIcon = ::LoadIcon( NULL, IDI_APPLICATION ); // default app icon
this->m_wcx.hCursor = ::LoadCursor( NULL, IDC_ARROW ); // standard arrow cursor
this->m_wcx.hbrBackground = NULL;         // no background to paint
this->m_wcx.lpszMenuName = NULL; …
Run Code Online (Sandbox Code Playgroud)

c++ winapi

5
推荐指数
2
解决办法
2703
查看次数

等待事件的线程并不总是捕获事件信号

我有一个应用程序,其中多个线程在同一个事件对象上等待发信号。我看到的问题似乎是一种竞争状况,因为有时某些线程的等待状态(WaitForMultipleObjects)由于事件信号而返回,而其他线程的等待状态显然看不到事件信号,因为它们没有返回。这些事件是使用CreateEvent手动重置事件对象创建的。

我的应用程序处理这些事件,以便在信号通知事件对象时,其“所有者”线程负责重置事件对象的信号状态,如以下代码片段所示。等待同一事件的其他线程不会尝试重置其信号状态。

switch ( dwObjectWaitState = ::WaitForMultipleObjects( i, pHandles, FALSE, INFINITE ) )
{
case WAIT_OBJECT_0 + BAS_MESSAGE_READY_EVT_ID:
    ::ResetEvent( pHandles[BAS_MESSAGE_READY_EVT_ID] );
    /* handles the event */
    break;
}
Run Code Online (Sandbox Code Playgroud)

换句话说,我看到的问题似乎是MSDN网站上“ 备注”部分中PulseEvent描述的问题:

如果在从等待状态中删除线程的时间内发生对PulseEvent的调用,则不会释放该线程,因为PulseEvent仅释放那些在被调用时正在等待的线程。因此,PulseEvent不可靠,不应被新的应用程序使用。而是使用条件变量。

如果发生这种情况,我看到的唯一解决方案是每个线程向该对象的所有者线程注册其对给定事件对象的使用,以便所有者线程可以确定何时可以安全地重置事件对象的信号状态。

有一个更好的方法吗?谢谢。

c++ windows multithreading event-handling

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

成员函数内的类实例化

在该类的成员函数中实例化一个类是安全的吗?例如,假设我有CMyClass成员函数的类CMyClass::MemberFunc,我想创建另一个CMyClass内部实例CMyClass::MemberFunc.

void CMyClass::MemberFunc( void )
{
    CMyClass * pMyClass = new CMyClass();
}
Run Code Online (Sandbox Code Playgroud)

这合法/安全吗?我知道它编译.我关心的是递归.当我CMyClass第一次从主应用程序实例化时,是否会遇到递归错误?

void main( void )
{
    static CMyClass * s_pMyClass = new CMyClass(); // Will this cause recursion?
}
Run Code Online (Sandbox Code Playgroud)

或者,只有在调用具有附加类实例的特定成员函数时,才会发生递归吗?

void CMyClass::MemberFunc( void )
{
    CMyClass * pMyClass = new CMyClass();
    pMyClass->MemberFunc(); // Pretty sure this will cause a recursive loop.
}
Run Code Online (Sandbox Code Playgroud)

换句话说,我可以安全地在该类的成员函数中实例化一个给定的类,只要我不调用该类的第二个实例的成员函数吗?谢谢.

c++ oop recursion instantiation

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

是否可以手动计算类成员的字节偏移量?

也就是说,编译器用来生成类的标准是什么?例如,让我们说,我有类C与成员x,y以及z,我想知道的偏移z该类中.我可以只添加其他成员的数据类型大小,就像我对结构一样吗?

c++ compiler-construction class-members

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

MySQL是否需要主键用于多对多链接表?

Mod的注意事项:我阅读了大约十几篇与此问题相关的帖子,但没有一篇回答我的问题.请不要将此帖标记为删除; 这不是一个重复的问题.

我正在为包含多对多关系的网络库构建数据库.例如,标签和图像.显然,为了实现这一点,将创建第三个链接表.我可以看到在tags表和images表中使用主键列的用法,但我无法想象在链接表中使用它.它只会占用服务器空间.所以,我想在链表中没有主键列.MySQL是否允许这样做?或者,是否有任何令人信服的理由在链接表中拥有主键?谢谢.

链接表:

+--------------+---------+-----------+
| primary key? | tag ids | image ids |
+--------------+---------+-----------+
Run Code Online (Sandbox Code Playgroud)

澄清

具有在表的主键打破数据库?

mysql primary-key relational-database

5
推荐指数
3
解决办法
5047
查看次数

C# 运行时错误:“DataGridViewComboBoxCell 值无效”

我一天中的大部分时间都在为此工作,而解决方案仍然让我望而却步。我的 Winform 应用程序包含DataGridView其中两列是ComboBox下拉列表。奇怪的是,DataGridView似乎填充正确,但在填充时或每当有鼠标悬停或似乎任何其他与DataGridVeiw. 具体来说,我得到两个重复的错误的System.ArgumentExceptionSystem.FormatException。这两个错误的消息文本是:

“DataGridViewComboBoxCell 值无效。要替换此默认对话框,请处理 DataError 事件。”

我不想仅仅通过处理DataError事件来掩盖这个问题。 我想解决导致错误的问题。 这就是我填充列表的方式:

class ManageProcsRecord
{
    public SectionType PageSection { get; set; }
    public Int32 ContentID { get; set; }
    public String Content { get; set; }
    public Int32 SummaryID { get; set; }
    public RoleType UserRole { get; set; }
    public String Author { get; set; }
    public String SysTime { get; set; }
}

public enum …
Run Code Online (Sandbox Code Playgroud)

c# datagridview datagridviewcombobox winforms datagridviewcomboboxcell

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