static void M_Win_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT CodeNotify) { switch(id) { case IDC_COPY: CopyFiles(); //Выполнение копирования break; case IDC_CLEAR: ClearSelect(); //Снятие всех выделений break; case IDC_CONFIG: NewConfig(); //Изменение конфигурации break; case IDCANCEL: SendMessage(hwnd, WM_DESTROY, 0, 0);//Завершение программы и закрытие окон break; case IDC_SIZE_HDD: View_Map_HDD(); //Карта занятости HDD break; case IDC_ABOUT: About(); //Вывод информации break; case IDC_TO_TXT: OutTxt(); //Запись дерева в текстовый файл break; #if defined WRITE_YES //Режим записи разрешен case IDC_WRITE_FI: WriteFileToHDD(0); break; //Запись файлов на диск case IDC_WRITE_FO: WriteFileToHDD(1); break; //Запись файлов на диск case IDC_NEW_FO: WriteFileToHDD(2); break; //Запись файлов на диск case IDC_REN_FI: WriteFileToHDD(3); break; //Переименование case IDC_DEL_FI: WriteFileToHDD(4); break; //Удаление case IDC_CORR67: Correct67Sec(); break; //Коррекция содержимого 67 сектора #endif } }
int main() { // 通过T2SDK的引出函数,来获取一个新的CConfig对象 // 此对象在创建连接对象时被传递,用于配置所创建的连接对象的各种属性(比如服务器IP地址、安全模式) CConfigInterface * lpConfig = NewConfig(); // 通过T2SDK的引出函数NewXXXX返回的对象,需要调用对象的Release方法释放,而不能直接用delete // 因为t2sdk.dll和调用程序可能是由不同的编译器、编译模式生成,delete可能会导致异常 // 为了适应Delphi等使用(Delphi对接口自动调用AddRef方法),用C/C++开发的代码,需要在NewXXXX之后调用一下AddRef // 以保证引用计数正确 lpConfig->AddRef(); // [t2sdk] servers指定需要连接的IP地址及端口 lpConfig->SetString("t2sdk", "servers", "192.168.94.30:9999"); // [t2sdk] license_file指定许可证文件 lpConfig->SetString("t2sdk", "license_file", "license.dat"); // [t2sdk] send_queue_size指定T2_SDK的发送队列大小 lpConfig->SetString("t2sdk", "send_queue_size", "100"); //在此设置一下就可以支持自动重连 lpConfig->SetString("t2sdk", "auto_reconnect", "1"); // 通过T2SDK的引出函数,来获取一个新的CConnection对象 g_Connection = NewConnection(lpConfig); g_Connection->AddRef(); // 创建自定义类CCallback的对象(在初始化连接对象时需传递此对象,请看下面代码) CCallback callback; int ret = 0; // 初始化连接对象,返回0表示初始化成功,注意此时并没开始连接服务器 if (0 == (ret = g_Connection->Create(&callback))) { // 正式开始连接注册,参数1000为超时参数,单位是ms if (ret = g_Connection->Connect(1000)) { // 若连接/注册失败,打印失败原因 puts(g_Connection->GetErrorMsg(ret)); } else { // 演示如何使用打包器 IF2Packer *lpPacker = NewPacker(2); lpPacker->AddRef(); lpPacker->BeginPack(); lpPacker->AddField("Field"); lpPacker->AddStr("Data"); lpPacker->EndPack(); // 异步模式收发包,第三个参数填1 g_Connection->SendBiz(100, lpPacker, 1); // 释放打包器,不释放会引起内存泄露,后果严重 lpPacker->FreeMem(lpPacker->GetPackBuf()); lpPacker->Release(); } } else { puts(g_Connection->GetErrorMsg(ret)); } // 通过getchar阻塞线程,等待服务端应答包到达 // 演示断开重连时,可在此时关闭服务器,然后再恢复 getchar(); // 释放资源 g_Connection->Release(); lpConfig->Release(); return 0; }
int main() { // 通过T2SDK的引出函数,来获取一个新的CConfig对象 // 此对象在创建连接对象时被传递,用于配置所创建的连接对象的各种属性(比如服务器IP地址、安全模式) CConfigInterface * lpConfig = NewConfig(); // 通过T2SDK的引出函数NewXXXX返回的对象,需要调用对象的Release方法释放,而不能直接用delete // 因为t2sdk.dll和调用程序可能是由不同的编译器、编译模式生成,delete可能会导致异常 // 为了适应Delphi等使用(Delphi对接口自动调用AddRef方法),用C/C++开发的代码,需要在NewXXXX之后调用一下AddRef // 以保证引用计数正确 lpConfig->AddRef(); // [t2sdk] servers指定需要连接的IP地址及端口 lpConfig->SetString("t2sdk", "servers", "127.0.0.1:9004"); // [t2sdk] license_file指定许可证文件 lpConfig->SetString("t2sdk", "license_file", "license.dat"); // [t2sdk] send_queue_size指定T2_SDK的发送队列大小 lpConfig->SetString("t2sdk", "send_queue_size", "100"); //有名连接 lpConfig->SetString("t2sdk", "login_name", "xuxp"); // 通过T2SDK的引出函数,来获取一个新的CConnection对象 g_Connection = NewConnection(lpConfig); g_Connection->AddRef(); // 创建自定义类CCallback的对象(在初始化连接对象时需传递此对象,请看下面代码) CCallback callback; int ret = 0; // 初始化连接对象,返回0表示初始化成功,注意此时并没开始连接服务器,这里必须用Create2BizMsg,否则回调不成功 if (0 == (ret = g_Connection->Create2BizMsg(&callback))) { // 正式开始连接注册,参数1000为超时参数,单位是ms if (ret = g_Connection->Connect(1000)) { // 若连接/注册失败,打印失败原因 puts(g_Connection->GetErrorMsg(ret)); } else { //连接注册成功 puts("连接注册成功"); } } else { puts(g_Connection->GetErrorMsg(ret)); } // 通过getchar阻塞线程,等待服务端应答包到达 // 演示断开重连时,可在此时关闭服务器,然后再恢复 getchar(); // 释放资源 g_Connection->Release(); lpConfig->Release(); return 0; }