|
Mmm... but I´m afraid that it doesn´t work for the root node..
Thanks !
Braulio
|
|
|
|
|
Now I have a trouble with my project.
In my application, I want to send a byte to hardware port, example a address of printer port but I don't know how to do. Please help me!
Thanks!
TP
|
|
|
|
|
Take a look at the CreateFile() function. You can use this to open any kind of device. In the case of the printer port you would use something like:
HANDLE hLPTA = CreateFile("LPT1", ...) ;
You will then be able to use
ReadFile/WriteFile(handle) to send / get datat from the port.
Unfortunately, I dont have a full example on how to open the printer port, but I can give one for a serial port, with all the configuration calls.
Roger Allen
Sonork 100.10016
If I'm not breathing, I'm either dead or holding my breath.
A fool jabbers, while a wise man listens. But is he so wise to listen to the fool?
|
|
|
|
|
hi,
i posted a message yesterday but have not responses, and reading i thinks it's no well explained my doubt.
i have a managed class CNotificacionNet and unmanaged class CUNotificacionNet.
this is unmanaged code
#include "NotificacionNet.h"
class CUNotificacionNet : CFVNotificacion
{
public:
CUNotificacionNet(void);
~CUNotificacionNet(void);
sofianet::CNotificacionNet * m_pNotifiacion;
bool SetManagedNotifiacion(sofianet::CNotificacionNet*);
};
but when i build my project i recived this error:
c:\sofianet\UNotificacionNet.h(15): error C3265: cannot declare a managed 'm_pNotifiacion' in an unmanaged 'CUNotificacionNet'
any ideas to do it?
Thanks in advance
Salamanca 2002 Capital Cultural Europea, Visitala
|
|
|
|
|
I've been doing a lot of searching for this one, but finally struck gold in MSDN's C++ ME migration guide:
String * sTest = S"This is a test";
char __nogc* pcString = static_cast<char*>(Marshal::StringToHGlobalAnsi(sTest).ToPointer());
Just curious if many people are using this, or if there are other good methods to copy a managed string to an unmanaged char array.
|
|
|
|
|
For building an editor I'd need to know to how to create windows metafiles myself, and how to save them in the end.
Are there some free SDKs or are there already some solutions for pure MFC?
Thanks in advance,
Roland
|
|
|
|
|
Hi,
Just one thing, WMF files are old technology ( Win 3.1 legacy...), if you can choose what to use, rather use EMF files ( Enhanced Metafiles), for more info take a look at the API functions:
CreateEnhMetafile
PlayEnhMetafile
But if you need WMF support, you will find on MSDN lot of info about that as well.
One example about EMF ( load from resources and EMF, and show it in an MFC app, and ATL DLL), you can find it in:
http://www.codeproject.com/atl/PictureTransfer.asp
HTH
Braulio
|
|
|
|
|
Hi, i need to create a virtual serial communication port on windows2000/XP.
This port should be used by normal application program. This port communicate with any windows program that required serial com, and with my program that rules a virtual serial com.Who help me?
Eng. Giuseppe Peschiera
|
|
|
|
|
Hi:
I encount such codes, plz explain them in detail. Thank you in advance.
typedef unsigned (WINAPI *PBEGINTHREADEX_THREADFUNC)(LPVOID lpThreadParameter);
typedef unsigned *PBEGINTHREADEX_THREADID;
Best regard.
I confess that I am a stubborn guy, but why not put things thoroughly, logically and systematically clean. One concrete prolem is worth a thousand unapplied abstractions.
|
|
|
|
|
A typedef allows a new parameter to be created, it's more intelligent than a macro ( I believe ) but does the same sort of thing in effect. In this case, for example, PBEGINTHREADEX_THREADID is the same as an unsigned (int) pointer.
The reason to do this is that the type you use through your code for something specific can be changed just by changing the typedef.
I've never found a use for them, so if anyone else contradicts me, believe them first
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
"I'm somewhat suspicious of STL though. My (test,experimental) program worked first time. Whats that all about??!?!
- Jon Hulatt, 22/3/2002
|
|
|
|
|
so my answer could be wrong?
------------------------------------
Rickard Andersson, Suza Computing
ICQ#: 50302279
I'm from the winter country SWEDEN!
------------------------------------
|
|
|
|
|
I thought my answer might be a little more expansive, but I didn't think yours was wrong.
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
"I'm somewhat suspicious of STL though. My (test,experimental) program worked first time. Whats that all about??!?!
- Jon Hulatt, 22/3/2002
|
|
|
|
|
Of course!
And I just wanted to know if I was wrong about that point!
------------------------------------
Rickard Andersson, Suza Computing
ICQ#: 50302279
I'm from the winter country SWEDEN!
------------------------------------
|
|
|
|
|
I have used this kind of typedef in the past. Usually when I have loaded a DLL dynamically, and you nned to store function pointers to the return calls from GetProcAddress. This allows you to save the pointers in member vars and call them like function of a regular class once the pointers are correctly initialised.
For example:
typedef int (*DLLINIT)(int x);
typedef void (*DLLEXIT)() ;
class DLLWrapper
{
DLLINIT DLLInit;
DLLEXIT DLLExit ;
HINSTANCE hInstance ;
DLLWrapper(CString& filename)
{
DLLInit = NULL ;
DLLExit = NULL ;
hInstance = NULL ;
LoadDll(filename) ;
} ;
~DLLWrapper()
{
if (hInstance)
FreeLibrary(hIstance) ;
hInsatnce = NULL ;
}
bool LoadDLL(CString& filename)
{
hInstance = LoadLibrary(filename);
if (!hInstance)
return false ;
DLLInit = (DLLINIT)GetProcAddress(RefinementDLL.pDLL, "DLLInit");
DLLExit = (DLLEXIT)GetProcAddress(RefinementDLL.pDLL, "DLLExit");
return true ;
}
} ;
DLLWrapper fred("Some.DLL") ;
fred.DLLInit(1) ;
That lot was put together quickly, so it may not all be 100% correct.
Roger Allen
Sonork 100.10016
If I'm not breathing, I'm either dead or holding my breath.
A fool jabbers, while a wise man listens. But is he so wise to listen to the fool?
|
|
|
|
|
NicholasCougar wrote:
typedef unsigned (WINAPI *PBEGINTHREADEX_THREADFUNC)(LPVOID lpThreadParameter);
function pointer
NicholasCougar wrote:
typedef unsigned *PBEGINTHREADEX_THREADID;
a typedef of a unsigned!
A typedef is a way to make your own names of types in C++. And sometimes "makeing" your own types...
------------------------------------
Rickard Andersson, Suza Computing
ICQ#: 50302279
I'm from the winter country SWEDEN!
------------------------------------
|
|
|
|
|
Hi,
the first defines a pointer to a function that takes a void pointer as parameter and returns an unsigned. The second simply defines PBEGINTHREADEX_THREADID to be a pointer to an unsigned.
You probably got this from the CreateThread API, right?
You know, for kids!
|
|
|
|
|
The codes are from Multithreading Applications in Win32 written by Jim Beveridge & Robert Wiener
First, please study the second and sixth parameters.
unsigned long _beginthreadex(
void *security,
unsigned stack_size,
unsigned (* start_address)(void *),
void *arglist,
unsigned initflag,
unsigned *thrdaddr);
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes,
DWORD dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParameter,
DWORD dwCreationFlags,
LPDWROD lpThreadId);
According to Jim Beveridge & Robert Wiener' point of view, the function _beginthreadex() is the coat of CreateThread() and the types of its parameters have been changed for the sake of being adoptable to other operation system. While, as the CloseHandle() must be called at last, programmers can't get rid of "window.h". Another side effect is, though C compiler makes no difference between DWORD and unsigned (in fact unsigned int), C++ compiler doen't think so.
As CreateThread() is inside _beginthreadex(), its parameters are less likely to be modified. Defining parameters according to CreateThread() is smarter. Since the parameters must be accepted by _beginthreadex(), the codes we discussing must appear there. The true meaning of the codes is: force type convertion before calling _beginthreadex().
the following are codes in all:<may jim="" and="" robert="" can="" forgive="" me,just="" for="" discussion="">
//The beginning of codes
#define WIN32_LEAN_AND_MEAN
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <process.h>
typedef unsigned (WINAPI *PBEGINTHREADEX_THREADFUNC)(
LPVOID lpThreadParameter
);
typedef unsigned *PBEGINTHREADEX_THREADID;
int main()
{
HANDLE hThread;
DWORD dwThreadId;
int i=0;
hThread = (HANDLE) _beginthreadex(NULL,
0,
(PBEGINTHREADEX_THREADFUNC)ThreadFunc, // Attention, Plz
(LPVOID) i,
0,
(PBEGINTHREADEX_THREADID) & dwThreadId // Attention, Plz
);
if(hThread)
{
WaitForSingleObject(hThread, INFINITE);
CloseHandle(hThread);
}
return EXIT_SUCCESS;
}
DWORD WINAPI ThreadFunc(LPVOID n)
{
// Do something...
return 0;
}
//The end of codes
My opinion is, to be a best programmer, one should no only learn how to coding, but methodology inside as well. It's not for kids, its for a true programmer.
Best regard.
I confess that I am a stubborn guy, but why not put things thoroughly, logically and systematically clean. One concrete prolem is worth a thousand unapplied abstractions.
|
|
|
|
|
Hi all,
I used Crystal Report object in one of dialogs in my program ...
Now, i wanna make Setup disk for it,
I added CRYSTL32.OCX to my setup disk project.
I also added CRPE32.DLL ...
I registered the CRYSTL32.OCX activex in other computer without any problem ...
But when i open the dialog which has Crystal report object, then i get this error:
"Can not found database DLL"
What is it ?
Can you tell me the list of crystal report dlls that i must copy them in other computer for using crystal report activex ?
Please help me
My month article: Game programming by DirectX by Lan Mader.
Please visit in: www.geocities.com/hadi_rezaie/index.html
Hadi Rezaie
|
|
|
|
|
hey hadi
we ship a whole bunch of files to get crystal reports working:
crpaig80.dll
p2sodbc.dll
crpe32.dll
and the whole crystal folder inside your windows folder
hope this helps
---
"all's fair in love and war but in love there is no geneva convention"
|
|
|
|
|
Thanks alot for your reply
My month article: Game programming by DirectX by Lan Mader.
Please visit in: www.geocities.com/hadi_rezaie/index.html
Hadi Rezaie
|
|
|
|
|
Hi again lauren,
I copied them, and i registered the crystal report activex ...
But i still get this error: "Cannot find database DLL."
I'm wondering if i copied all crystal report .dll and .ocx and i still get this error
I used DAO in my program without any problem.
What is your idea ?
My month article: Game programming by DirectX by Lan Mader.
Please visit in: www.geocities.com/hadi_rezaie/index.html
Hadi Rezaie
|
|
|
|
|
Hi,
It´s possible to add some extra info to a table ( that the user cannot see).
What I do with Ms Word is to insert several tables ( b.g. List of resources, List of Tasks...), and what I would like to do is if the user presses the "Update" button iterate through that tables and ask -> "Hey were you a table generated by ? Ah ! "Task list table" Ok!" ( then delete the table and add a new task list table...
I will need only a single "byte" value to store that... so please Ms Word gimme a byte ....
Thanks in advance, Greetings
Braulio
|
|
|
|
|
I have a program where the user creates a list of objects:
class MyObject{
char name[32];
double m_FixedVariables[FIXED_SIZE];
double* m_VarVector1;
duble* m_VarVector2;
};
I have created a separate heap for all these objects using HeapCreate. The two variable vectors have the same size, but the user may add or delete elements. I have created a separate block of memory for the vectors with VirtualAlloc, and a scheme where I expand or shrink this block as needed using MEM_RESERVE, MEM_COMMIT, etc. To me this seems very compact and efficient, but all you gurus will say that I should use std::vector instead. Otherwise, I will sooner or later run into trouble ("Arrays are evil!").But I have no idea how the memory allocation will work with std::vector, will the heap management be as efficient?
|
|
|
|
|
Vector impliments a grow policy so that it can limit the number of times it needs to recreate itself. It is unlikely to be as efficient as the custom code you are writing.
If you need this level of efficiency, I'd advise to write your own container so that it exposes random access iterators, so you can copy between it and STL containers, and use the provided algorithms, use it with streams, etc.
A pointer is a random access iterator, so it's not much harder than providing begin() and end() methods.
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
"I'm somewhat suspicious of STL though. My (test,experimental) program worked first time. Whats that all about??!?!
- Jon Hulatt, 22/3/2002
|
|
|
|
|
Thank, you Christian. I take your reply as an encouragement, not a warning. I will toddle along the path I have choosen for a little longer and see where it takes me. The vectors will be around as a fallback.
Regards, Haakon.
|
|
|
|
|