|
Sorry, 8-bit / 256-color. Fixed in the previous post.
-----BEGIN GEEK CODE BLOCK-----
Version: 3.21
GCS/G/MU d- s: a- C++++ UL@ P++(+++) L+(--) E--- W+++ N++ o+ K? w++++ O- M(+) V? PS-- PE Y++ PGP++ t++@ 5 X+++ R+@ tv+ b(-)>b++ DI++++ D+ G e++>+++ h---* r+++ y+++
-----END GEEK CODE BLOCK-----
|
|
|
|
|
126 bit... do you meant 8?
/\ |_ E X E GG
|
|
|
|
|
1) I changed it before you could've seen it, and 2) where you did you get 126-bit? It used t say "256 bit" by mistake, when it should've said 8-bit. Yes, I do very much know the difference but people make mistakes, especially when they're tired.
-----BEGIN GEEK CODE BLOCK-----
Version: 3.21
GCS/G/MU d- s: a- C++++ UL@ P++(+++) L+(--) E--- W+++ N++ o+ K? w++++ O- M(+) V? PS-- PE Y++ PGP++ t++@ 5 X+++ R+@ tv+ b(-)>b++ DI++++ D+ G e++>+++ h---* r+++ y+++
-----END GEEK CODE BLOCK-----
|
|
|
|
|
yes, i totally agree.
/\ |_ E X E GG
|
|
|
|
|
Hi All,
In my code I am opening a window( new process)using System.Diagnostic.Process.
In this window there is one button to open a modal dialog.
Is there any way I can check whether dialog is open or not using process object.
Thanks in advance,
Tonu
|
|
|
|
|
If this is another .NET application, you could use .NET Remoting to communicate across the two AppDomain hosted by each process. Another way - and if the process is a native application - is to P/Invoke FindWindow to find a Window with the given text (assuming the dialog has a unique caption):
[DllImport("user32.dll", CharSet=CharSet.Auto)]
IntPtr FindWindow(string class, string caption);
...
IntPtr hWnd = FindWindow(null, "My Dialog Caption");
-----BEGIN GEEK CODE BLOCK-----
Version: 3.21
GCS/G/MU d- s: a- C++++ UL@ P++(+++) L+(--) E--- W+++ N++ o+ K? w++++ O- M(+) V? PS-- PE Y++ PGP++ t++@ 5 X+++ R+@ tv+ b(-)>b++ DI++++ D+ G e++>+++ h---* r+++ y+++
-----END GEEK CODE BLOCK-----
|
|
|
|
|
Hi,
Dose anybody know where can i download "Server 2003 DDK", and i need to write a program to comunicate and transfer files with a remote computer via modem with this protocols (ZMODEM/XMODEM), can you send me some hint or source code links to help me to start it.
thanks in advance.
|
|
|
|
|
|
Our clients using windows platform, please give me windows based hint.
thanx
|
|
|
|
|
This is the C# forum, not the Windows or Windows DDK forum. Please post to the C/C++ forum or the OS forum, or go to http://msdn.microsoft.com[^].
-----BEGIN GEEK CODE BLOCK-----
Version: 3.21
GCS/G/MU d- s: a- C++++ UL@ P++(+++) L+(--) E--- W+++ N++ o+ K? w++++ O- M(+) V? PS-- PE Y++ PGP++ t++@ 5 X+++ R+@ tv+ b(-)>b++ DI++++ D+ G e++>+++ h---* r+++ y+++
-----END GEEK CODE BLOCK-----
|
|
|
|
|
|
I am trying to import some functions from an open source library(DLL).
//Here is the function definition in C/C++
PJ* pj_init(int argc, char **argv);
//Here is the PJ struct in a .h file
typedef struct PJconsts {
XY (*fwd)(LP, struct PJconsts *);
LP (*inv)(XY, struct PJconsts *);
void (*spc)(LP, struct PJconsts *, struct FACTORS *);
void (*pfree)(struct PJconsts *);
const char *descr;
paralist *params; /* parameter list */
int over; /* over-range flag */
int geoc; /* geocentric latitude flag */
int is_latlong; /* proj=latlong ... not really a projection at all */
int is_geocent; /* proj=geocent ... not really a projection at all */
double
a, /* major axis or radius if es==0 */
e, /* eccentricity */
es, /* e ^ 2 */
ra, /* 1/A */
one_es, /* 1 - e^2 */
rone_es, /* 1/one_es */
lam0, phi0, /* central longitude, latitude */
x0, y0, /* easting and northing */
k0, /* general scaling factor */
to_meter, fr_meter; /* cartesian scaling */
int datum_type; /* PJD_UNKNOWN/3PARAM/7PARAM/GRIDSHIFT/WGS84 */
double datum_params[7];
double from_greenwich; /* prime meridian offset (in radians) */
#ifdef PROJ_PARMS__
PROJ_PARMS__
#endif /* end of optional extensions */
} PJ;
I understand that I need to use DLLImport to import the function and [ StructLayout( LayoutKind.Sequential )] to create a clss representing the struct, but I'm clueless on the first 4 lines in the struct above:
XY (*fwd)(LP, struct PJconsts *);
LP (*inv)(XY, struct PJconsts *);
void (*spc)(LP, struct PJconsts *, struct FACTORS *);
void (*pfree)(struct PJconsts *);
XY and LP are simple structs
typedef struct { double x, y; } XY;
typedef struct { double lam, phi; } LP;
Any ideas?
Thanks,
sam
|
|
|
|
|
The XY and LP structs are easy:
[StructLayout(LayoutKind.Sequential)]
public struct XY
{
public double x;
public double y;
}
[StructLayout(LayoutKind.Sequential)]
public struct LP
{
public double lam;
public double phi;
} If you look at the PJconsts struct, though, it's actually being used as a class (possible in C++). You should instead define this as a class, keeping in mind that anything declared as a class is a reference Type already, so you don't need a pointer to it. If you need to pass a reference to a value type (like struct s, for example), use either the out or ref keyword, depending on whether or not the param is defined as [out] or [in,out] respectively.
-----BEGIN GEEK CODE BLOCK-----
Version: 3.21
GCS/G/MU d- s: a- C++++ UL@ P++(+++) L+(--) E--- W+++ N++ o+ K? w++++ O- M(+) V? PS-- PE Y++ PGP++ t++@ 5 X+++ R+@ tv+ b(-)>b++ DI++++ D+ G e++>+++ h---* r+++ y+++
-----END GEEK CODE BLOCK-----
|
|
|
|
|
Yeah XY and LP are easy, my problem is the PJconsts struct..... which is really the PJ struct, I think the PJconsts is some type of C label, while PJ is the actual name. This thread http://forums.devshed.com/archive/42/2003/9/1/80923 talks a bit about it...
and what is the deal with the first 4 lines of the struct.....
|
|
|
|
|
They're method declarations, which is why I was saying that this could be better suited for a class. This was a way in C to declare class-like entities.
-----BEGIN GEEK CODE BLOCK-----
Version: 3.21
GCS/G/MU d- s: a- C++++ UL@ P++(+++) L+(--) E--- W+++ N++ o+ K? w++++ O- M(+) V? PS-- PE Y++ PGP++ t++@ 5 X+++ R+@ tv+ b(-)>b++ DI++++ D+ G e++>+++ h---* r+++ y+++
-----END GEEK CODE BLOCK-----
|
|
|
|
|
XY (*fwd)(LP, struct PJconsts *);
LP (*inv)(XY, struct PJconsts *);
void (*spc)(LP, struct PJconsts *, struct FACTORS *);
void (*pfree)(struct PJconsts *);
Obviously, we dealing with function pointers here, aka CALLBACK. You can safely use static delegate instances for this. I'm not sure about returning those structs, marshalling could give you either a pointer or a value, you will just have to try.
leppie::AllocCPArticle("Zee blog"); Seen on my Campus BBS: Linux is free...coz no-one wants to pay for it.
|
|
|
|
|
I'm still having problems with the marshalling
I get an exception "Can not marshal field param of type ProjWrapper.PJ: The type definition of this field has no layout information."
I have tagged it with Layout.Sequential
public delegate XY fwd(LP lp, PJ pj); <br />
<br />
[StructLayout(LayoutKind.Sequential)]<br />
public class PJ<br />
{<br />
fwd fwdcallback;<br />
}
Could the problem be in the return Marshal of the PJ class, or am I messing up the callback definitions still
Thank you very much for your help....
-Sam
|
|
|
|
|
sammyh wrote:
fwd fwdcallback;
//etc
Somewhere after the //etc is the error
leppie::AllocCPArticle("Zee blog"); Seen on my Campus BBS: Linux is free...coz no-one wants to pay for it.
|
|
|
|
|
alright... progress, seems to be working
The last 2 hurdles
First I was doing this
[StructLayout(LayoutKind.Sequential)]<br />
public class paralist <br />
{<br />
paralist next;<br />
char used;<br />
char param; <br />
}
when it likes this better
[StructLayout(LayoutKind.Sequential)]<br />
public unsafe class paralist <br />
{<br />
paralist *next;<br />
char used;<br />
char param; <br />
}
Second, I had to replace
fwd fwdcallback;
with
int fwdcallback;
Thanks again.
|
|
|
|
|
i downloaded and installed the directx sdk. how do i use it in my project? the microsoft.directx namespace isn't available and i can't figure out to add a refernce to it.
what am i missing?
thanks
|
|
|
|
|
You should start by opening some samples and playing with them...
If everything is installed right, you should just be able to click Project->Add Reference, and they should be under the .NET tab.
The dlls are in C:\WINDOWS\Microsoft.NET\Managed DirectX if you need to do a direct reference
|
|
|
|
|
Did you install the Summer 2003 update or an older one? They all install a little differently.
For starters, the Microsoft.DirectX namespaces aren't available until the assembly that declares them is referenced. To reference these, first try installing the managed extensions (one one of the installations, these weren't installed while installing the SDK - don't remember which, though) from DXSDKDIR\Developer Runtime\Managed DirectX then from either the Debug or Retail directory. Start VS.NET and you should see the DirectX managed assemblies in the list now.
If you don't, find the location of the installed libraries (like %WINDIR%\Microsoft.NET\Managed DirectX\v9.00.1126) and add the path to the HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\AssemblyFolders registry key using regedit.exe.
I've installed three or four different versions / updates since the first managed assemblies were released over a short period of time to, unfortunately, I can't remember how they all behaved during installation. The directions above should do the trick, though.
-----BEGIN GEEK CODE BLOCK-----
Version: 3.21
GCS/G/MU d- s: a- C++++ UL@ P++(+++) L+(--) E--- W+++ N++ o+ K? w++++ O- M(+) V? PS-- PE Y++ PGP++ t++@ 5 X+++ R+@ tv+ b(-)>b++ DI++++ D+ G e++>+++ h---* r+++ y+++
-----END GEEK CODE BLOCK-----
|
|
|
|
|
i installed the summer 2003 update. i see the dlls in C:\WINNT\Microsoft.NET\Managed DirectX\v9.00.1126. i followed your directions, but i'm not sure if it worked. when i try and add a reference, i don't see any directx dll's on the .net tab. on the com tab, i see things like direct 1.0 type library, directx 8 for visual basic type library, among others. do i use one of these? i tried a few of them, but nothing seemed to work.
thanks for your help.
|
|
|
|
|
Did you start/restart VS.NET? Once you add that registry key like the others you should've seen in there, VS.NET won't pick them up again if you've already opened the Add Reference dialog once before. You have to restart for the change to take effect.
I wouldn't recommend using the COM interface. Developers were doing that before DirectX 9 introduced the managed assemblies and it was always a pain. There are several articles here on CP that dealt with those cases (or encapsulated the native functions).
If you're still having trouble after trying all this, go to http://msdn.microsoft.com/directx[^] and check out any support articles that seem relevant. This should all work, though. I had to do it once after installing one of the versions (DirectX 9.0, then a, then b, then Summer 2003 update) and everything has worked fine after that. Now if I could only find a good DirectX development book because I have a passive interest in games development (just curiousity, mostly).
-----BEGIN GEEK CODE BLOCK-----
Version: 3.21
GCS/G/MU d- s: a- C++++ UL@ P++(+++) L+(--) E--- W+++ N++ o+ K? w++++ O- M(+) V? PS-- PE Y++ PGP++ t++@ 5 X+++ R+@ tv+ b(-)>b++ DI++++ D+ G e++>+++ h---* r+++ y+++
-----END GEEK CODE BLOCK-----
|
|
|
|
|
.NET Game Programming with DirectX 9, Alexandre Lobao. APress.
Managed DirectX 9 Graphics and Game Programming, SAMS.
Lobao's book was "panned" by lots of reviewers, and i have to admit i didn't build the projects (actually i hardly parse vb) but to me it seems like a great overview of how stuff is actually written (there are lots of technical books on 3d, kinematics etc for further reading if you get interested).
|
|
|
|