|
|
You need to fire events for all 4 buttions and form. If a buttion has focus(If you press tab and then you will see sometimes a dotted border around text.), it will fire an event from a buttion not form-
|
|
|
|
|
No thanks. I'm not going to download, open and study some ZIP file.
You better figure out the difference between keyboard keys and Windows Buttons, then show us the appropriate part of your code if that is still necessary.
Luc Pattyn [Forum Guidelines] [My Articles]
The quality and detail of your question reflects on the effectiveness of the help you are likely to get.
Show formatted code inside PRE tags, and give clear symptoms when describing a problem.
|
|
|
|
|
When you say this:
Mohammad Dayyan wrote: but when I press Key.Down
Are you clicking a button or pressing a keyboard key?
|
|
|
|
|
ricmil42 wrote: Are you clicking a button or pressing a keyboard key?
I'm pressing Key.Down of keyboard.
|
|
|
|
|
It is the use of Keys.Down that is the problem.
If you change your code to if (e.KeyCode == Keys.K) , for example, and test it you will find that the event does fire.
So what you need to do is research what the difference is between the way Down and 'K' are processed.
Henry Minute
Do not read medical books! You could die of a misprint. - Mark Twain
Girl: (staring) "Why do you need an icy cucumber?"
“I want to report a fraud. The government is lying to us all.”
|
|
|
|
|
Henry Minute wrote: If you change your code to if (e.KeyCode == Keys.K), for example, and test it you will find that the event does fire.
No, it doesn't fire.
this is the application http://www.mediafire.com/?mh01etlgm5z[^]
|
|
|
|
|
It does fire, only Key.Down is the problem. If your application doesn't fire the event, then it's something wrong. I just tried it, it fires event if Keys.A, but no event in Keys.Down.
|
|
|
|
|
Fires fine on my system. For any of the main keyboard keys but not for the cursor control keys, or other 'special' keys like that.
As I said previously, what you need to do is find out what it is that makes those keys 'special'.
Henry Minute
Do not read medical books! You could die of a misprint. - Mark Twain
Girl: (staring) "Why do you need an icy cucumber?"
“I want to report a fraud. The government is lying to us all.”
|
|
|
|
|
Hi,
I've searched high and low and couldn't find any source code for encoding\decoding JPEG files for C# (although found plenty in C\C++)
I know that this format is widely supported but I would like to have the source code for reading such a format.
Any ideas ?
|
|
|
|
|
If you're just trying to display it on-screen or get the property items, the System.Drawing.Image class should be all you need
Between the idea
And the reality
Between the motion
And the act
Falls the Shadow
|
|
|
|
|
The deal is I need the code as I want to develop a variant of the original JPEG format. I want the source code because I don't want to start from scratch.
|
|
|
|
|
You already have some source, all you need to do is convert the code from C/C++ to C#. You'll have to do this by hand since there are no converters to rewrite C/C++ code to C#.
|
|
|
|
|
I thought about porting the code but since the source in C is around 15000 lines filled of complex memory and mathematical operations I have no doubt that doing porting without mistakes will be quite a challenge.
|
|
|
|
|
I didn't say it would be easy, just that it was what you had to do!
You really SHOULD do it this way because, as you said above, you want to develop your own variant of JPEG. Well, you're going to have to understand the code in order to update it with your implementation changes. There's no better way than rewriting it in your own language.
|
|
|
|
|
Hi,
I've created a c-shared matlab library, which I want to use in my solution.
Using DllImport I can initialize the matlab environment, initialize my matlab model
and send parameters to this dll.
All works wel..., except I can't get the results!
In matlab, I've got a simple (test) function which returns a fixed value: 1234.
The created library has the following .h file:
extern LIB_Matlab_Test_C_API bool MW_CALL_CONV mlfMatlab_test(int nargout
, mxArray** steps
, mxArray* test_string
, mxArray* nog_een_test_string);
This is how I interface to the dll:
[DllImport("Matlab_Test.dll", EntryPoint = "mlfMatlab_test")]
static extern bool Matlab_Test(
[Out][MarshalAs(UnmanagedType.I4)]int nargout,
IntPtr return_value,
[In][MarshalAs(UnmanagedType.LPStr)]string myString,
[In][MarshalAs(UnmanagedType.LPStr)]string mySecondString);
And finally, calling the function:
int nargout = 1;
IntPtr pbuf = Marshal.AllocHGlobal(256);
Matlab_Test(nargout, pbuf,"dummy string", "yet another dummy string");
int sOut = Marshal.ReadInt32(pbuf);
Console.WriteLine("\t\tsucceeded! Value = {0}", sOut);
Marshal.FreeHGlobal(pbuf);
The value of sOut always remains zero
Does anyone have an idea of what I'm doing wrong here?
-- Stupidity should be painfull --
|
|
|
|
|
Hi,
I'm not sure what is wrong, however there is an easy way to get native string results; this is my recipe, and it works without any Marshal attributes:
const int CAPACITY=1000;
StringBuilder sb=new StringBuilder(CAPACITY);
NativeFunction(sb, sb.Capacity, ...);
string result=sb.ToString();
[DllImport...] static extern void NativeFunction(string textBuffer, int textBufferSize, ...);
and the native code looks like
void NativeFunction(char* textBuffer, int textBufferSize, ...) {...}
Luc Pattyn [Forum Guidelines] [My Articles]
The quality and detail of your question reflects on the effectiveness of the help you are likely to get.
Show formatted code inside PRE tags, and give clear symptoms when describing a problem.
|
|
|
|
|
Hey jan,
Is your problem is solved!!
I am stuck with the same problem, I am also getting the return value as 0.
Plz reply
|
|
|
|
|
Hi Save-Tigers,
I managed to get it to work, thanks to the support of Matlab
although they mentioned several times I should buy the .net compiler
from them..
This is (part of my) code:
1) initialize matlab environment:
[DllImport("mclmcrrt710.dll", EntryPoint = "mclInitializeApplication_proxy")]
static extern bool InitiateMatlabApplication(string options, Int32 count);
call it from your code:
bool result = InitiateMatlabApplication(null, 0);
2) initialize your matlab code:
[DllImport("MatlabModel.dll", EntryPoint = "MatlabModelInitialize")]
static extern bool InitiateMatlabModel();
Note that MatlabModel must be replaced by whatever you named it
call it from your code:
bool result = InitiateMatlabModel();
3) Passing string arguments to Matlab:
[DllImport("MatlabModel.dll", EntryPoint = "mlfInitializeProject")]
static extern bool InitializeProject(IntPtr RootDir,
IntPtr Name);
Where RootDir and Name are strings. Use mxcreate_string_proxy from Matlab
to convert to matlab-format:
[DllImport("mclmcrrt710.dll", EntryPoint = "mxCreateString_proxy", CharSet = CharSet.Ansi)]
static extern IntPtr CreateString([In][MarshalAs(UnmanagedType.LPStr)] string myString);
Use this in your code:
IntPtr ptrLocation = CreateString(strProjectLocation);
IntPtr ptrName = CreateString(Settings.ProjectName);
Now, use the pointers above to pass strings to matlab:
result = InitializeProject(ptrLocation, ptrName);
4) Retrieving double argument from Matlab:
I've created a function which returns a double, nothing more:
[DllImport("MatlabModel.dll", EntryPoint = "mlfGetNofSteps")]
To use it in your code:
IntPtr result_ptr = IntPtr.Zero;
bool result = GetNofSteps(1, ref result_ptr)
To convert the pointer to an integer:
[DllImport("mclmcrrt710.dll", EntryPoint = "mxGetScalar_proxy")]
static extern double GetScalar(IntPtr mxArray);
So, to convert the pointer to value:
int NumberOfSteps = Convert.ToInt32(GetScalar(result_ptr));
5) Retrieving from and sending arguments to Matlab:
I've created a function which returns some matrices and uses a double as variable:
[DllImport("MatlabModel.dll", EntryPoint = "mlfmyFunction")]
static extern bool myFunction(int nargout,
ref IntPtr ptrResultMatrix1,
ref IntPtr ptrResultMatrix2,
ref IntPtr ptrResultMatrix3,
IntPtr ptrSTep);
First, to create pointers to matrices Matlab can use as output parameters, use this:
[DllImport("mclmcrrt710.dll", EntryPoint = "mxCreateDoubleMatrix_700_proxy")]
static extern IntPtr CreateDoubleMatrix(int cols, int rows, int flags);
Use the above function to declare pointers to matrices in which Matlab will return the values:
IntPtr ptrResultMatrix1 = CreateDoubleMatrix(10, 1, 0);
IntPtr ptrResultMatrix2 = CreateDoubleMatrix(10, 1, 0);
IntPtr ptrResultMatrix3 = CreateDoubleMatrix(10, 1, 0);
Next, create matrix to use as input parameter:
double[] value = new double[1];
value[0] = Convert.ToDouble(DayStep);
IntPtr ptrStapDag = CreateDoubleMatrix(1, 1, 0);
IntPtr value_ptr = GetPtr(ptrStep);
Marshal.Copy(value, 0, value_ptr, 1);
Now the pointers are set, call the created function:
bool result = myFunction(3, ref ptrResultMatrix1, ref ptrResultMatrix2,
ref ptrResultMatrix3, ptrStep);
Notice the 'ref' for output parameters!
I hope the above sample code helps you out.
Maybe I should write an article on codeproject, explaining it in detail.
-- Stupidity should be painfull --
|
|
|
|
|
Hey thanks JAN,
That was realy realy a very good help......
thanks thanks a lot for this
Reg,
Deep
Happy coding
|
|
|
|
|
hi
can you help explaning how you create the dll,
using mcc?
what is the line you write when you compile m file?
i am asking this because i wrote:
mcc -W cpplib:TestFunction -T link:lib TestFunction.m
and in the export finctions i got mlxTestFunction instead of "mlfTestFunction"
thanks
|
|
|
|
|
Hi Nizar,
I didn't create the dll using the command line,
instead I used deploytool.
I selected the Microsoft compiler, which creates
both mlx as well as mlf functions.
-- Stupidity should be painfull --
|
|
|
|
|
hi
can you help explaning how you create the dll,
using mcc?
what is the line you write when you compile m file?
i am asking this because i wrote:
mcc -W cpplib:TestFunction -T link:lib TestFunction.m
and in the export finctions i got mlxTestFunction instead of "mlfTestFunction"
thanks
|
|
|
|
|
hi
i try the same way you discriped here but when it get to call myFunction if failed.
any idea?
bool result1 = InitiateMatlabApplication(null, 0); // pass ok
bool result2 = TestFunctionInitialize(); // Pass ok
bool result3 = mlxTestFunction(); // failed
bool result4 = TestFunctionTerminate();
thanks
|
|
|
|
|
I didn't use the mlx function, instead I used the mlf functions.
The InitiateMatlabApplication, TestFunctionInitialize and TestFunctionTerminate
are default created by Matlab, soo it is likely they will pass.
-- Stupidity should be painfull --
|
|
|
|
|