PDA

View Full Version : سوال: طريقه تبديل LPVOID به my ref class



negative60
دوشنبه 14 بهمن 1392, 11:01 صبح
سلام
در حال ساخت يک dll به عنوان کامپوننت برای يک برنامه ديگه هستم مشکلی که دو روزه درگير اونم اين هست که يک ref class داريم که در اون از تريد استفاده شده و داخل اين تريد هم بايد يک اِونت يا تابع رو صدا بزنيم اما هرچقدر سعی و جستجو کردم راهی برای تبديل پارامتر LPVOID به متغير از نوع کلاسم پيدا نکردم; ممنون ميشم اگه کسی بتونه راهنمايی کنه.


#include "stdafx.h"
#include <windows.h>

public delegate void OnWork();
//ref class MyClass;

static DWORD WINAPI StartThread(LPVOID ptr)
{
//MyClass^ cls = static_cast<MyClass^>(ptr);
MyClass^ cls = (MyClass^)ptr;
//MyClass cls = (MyClass)ptr;

//MyClass::myFunction();
//cls->myFunction();
//cls->InWork();

return 0;
}

public ref class MyClass
{
private:
void RunThread()
{
MyClass^ param = this;
int ThreadParametr = 1;
HANDLE TheadhWnd = 0;
TheadhWnd = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)&StartThread, &param, 0, NULL);

//WaitForSingleObject(TheadhWnd, INFINITE);
//CloseHandle(TheadhWnd);
}

public:

event OnWork^ InWork;

void Start()
{
RunThread();
}

void myFunction()
{
InWork();
}


};

negative60
پنج شنبه 17 بهمن 1392, 12:58 عصر
کسی نظری نداره؟!
پيغام خطا:

error C2440: 'type cast' : cannot convert from 'LPVOID' to 'MyClass'

اصلاً چطور ميشه بيرون از کلاس به توابع کلاس دسترسی داشت؟ (به غير از new کردن کلاس)
به اين صورت که بعد از اينکه کار تريد به پايان رسيد نتيجه رو به کلاس ارسال کنم