RE: Thread problem
MFC and C can compile together.
Just copy and paste your code and, call the main function in MFC event
handler.
Additional, If you want, make global functions to class object.
It's all, there is nothing special in MFC.
--
WebSite :
Realization of Dream { imagine your dream} - http://rodream.net
WebMail :
rodream@naver.com
"Sven Eichenm??ller" wrote:
Hello,
I'm trying to write a MFC-Dialog of a Dpws-Server-Client sample.
So I have the existing C sample-code, which starts a thread, but I am
not able to transform it to C++.
This is the existing c-code:
// =====================================
#include <windows.h>
#include <stdio.h>
#include "dpws.h"
/*
* IMPORTANT NOTE: This multi-thread server is supplied as an example
for studying purpose
* and does not meet the usual standards of industrial software. For
instance, threads
* should not create threads or allocate a runtime structure for every
service but implement
* pools instead.
*/
HANDLE bootThread = NULL;
static DWORD WINAPI runServer(struct dpws *);
static DWORD WINAPI serve(struct dpws *);
int initServer(struct dpws *dpws)
{
int status = dpws_server_init(dpws, NULL);
if (status)
fprintf(stderr, dpws_get_error_msg(dpws));
return status;
}
int bootServer(struct dpws *dpws)
{
bootThread = CreateThread(NULL, 0, runServer, dpws, 0, NULL);
if (bootThread == NULL) {
fprintf (stderr, "Thread Creation ERROR (%d) - bootServer()\n",
GetLastError());
return -1;
}
return 0;
}
void stopServer()
{
dpws_stop_server(1000);
// wait for the master thread to exit
WaitForSingleObject(bootThread, 2000);
CloseHandle(bootThread);
}
static DWORD WINAPI runServer(struct dpws * m_dpws)
{
HANDLE hThread;
struct dpws * s_dpws;
int status = DPWS_OK;
while (TRUE) {
/* Allocate a DPWS runtime structure for the next serve task */
s_dpws = HeapAlloc(GetProcessHeap(), 0, sizeof(struct dpws));
status = dpws_accept_thr(m_dpws, s_dpws);
if (status) {
if (status != DPWS_ERR_SERVER_STOPPED)
fprintf(stderr, dpws_get_error_msg(m_dpws));
goto exit;
}
/* spawn a new thread */ // NOTE: implement a pool instead
hThread = CreateThread(NULL, 0, serve, s_dpws, 0, NULL);
if (hThread == NULL) {
fprintf (stderr, "Thread Creation ERROR (%d) - runServer()\n",
status);
goto exit;
}
else
CloseHandle(hThread);
}
exit:
// dpws_shutdown() is performed by the DLL
return 0;
}
static DWORD WINAPI serve(struct dpws * dpws)
{
dpws_serve(dpws);
dpws_end(dpws);
HeapFree(GetProcessHeap(), 0, dpws);
return 0;
}
// =========================================================
Could anyone help me to get a MFC-C++-code that achieves the same?
Regards, Sven