C++/CLR c++底层代码操作上层ui
public ref class MainForm : public System::Windows::Forms::Form
{
public:
MainForm(CNetWorkImpl* m_Impl_)
{
InitializeComponent();
comboBoxEx1->SelectedIndex = 0;
comboBoxEx2->SelectedIndex = 0;
textBoxX_CodeSignal->Enabled = false;
textBoxX_CodeTrade->Enabled = false;
checkBoxX_AllData->Checked = true;
dateTimeInput_Start->Enabled = false;
dateTimeInput_End->Enabled = false;
textBoxX_KlineCount->Enabled = false;
m_SyncContext = SynchronizationContext::Current;
m_Impl = m_Impl_;
m_Impl->IniImpl(atoi(cfg.GetValue("network","port").c_str()), cfg.GetValue("network","ip").c_str(), (HWND)this->Handle.ToPointer());
}
//...其他方法、属性
private:
CNetWorkImpl* m_Impl;
};
}
上层UI通过m_Impl->IniImpl()函数的第三个参数将句柄传下去。
#define NETWORK_CONNECTED (WM_USER)+0x01
class CNetWorkImpl : public CAsioNetWorkSpi
{
public:
CNetWorkImpl(const char* pFilePath) : bConnected(false),pApi(nullptr) {
strcpy_s(szFilePath, pFilePath);
}
void IniImpl(unsigned int nPort, const char* pAddress,HWND hwnd)
{
pApi = CAsioNetWorkApi::CreateNewWorkApi();
pApi->RegistSpi(this);
pApi->ConnectService(nPort, const_cast<char*>(pAddress));
upper_layer = hwnd;
}
void OnRspConnect()
{
bConnected = true;
::SendMessage(upper_layer, NETWORK_CONNECTED, NULL, NULL);
}
}
底层想通过发送消息::SendMessage(upper_layer, NETWORK_CONNECTED, NULL, NULL);给上层更新UI。
请问上层的消息接收函数怎么写?注意:这是c++/clr代码,不是c#。
或者有别的思路,可以让底层操作上层UI。
...全文
相关推荐
vs2012 c++/clr windows窗体应用程序补丁
C++/CLR是Microsoft为.NET Framework提供的一种编程语言,它允许开发者使用C++语法来编写托管代码,即运行在.NET Framework之上的代码。
C++调用C#库实战:C++/CLI、COM与IPC方案深度解析
在软件系统集成与现代化改造中,跨语言互操作是连接不同技术栈、复用现有资产的关键技术。其核心原理在于解决不同运行时环境(如原生代码与托管代码)之间的内存管理、调用约定与数据封送处理问题。这项技术的核心价值在于实现高性能模块与高效开发语言的协同,例如在工业软件、游戏引擎插件等场景中,将C++的高性能计算能力与C#的快速开发、丰富生态相结合。通过进程内桥接、标准化接口或进程间通信等不同方案,开发者可以在保持系统主体稳定的前提下,渐进式引入.NET生态的强大功能,如JSON序列化或特定SDK。本文以C++调用C#库
Clr.rar_C++/CLR 源码_clr
在"Clr.rar"这个压缩包中,我们关注的是"C++/CLR 源码_clr",这表明其中包含的源代码是用C++/CLI编写的,旨在实现一种颜色渐变的进度条效果。
利用CLR(c++/cli)进行arx二次开发
C++/CLI是微软为了C++程序员与.NET Framework集成而设计的一种语言,它支持托管代码,即运行在CLR上的代码,同时也保留了传统C++的特性。
VS2017创建CLR项目.docx
安装插件的方法如下:菜单栏选择“Tools”→“Get Tools and Features…”选项,在弹出的对话框中选择“使用 C++ 的桌面开发”→“C++/CLI 支持”选项,选择“修改”进行插件安装


