|
sorry for unclear explanation of my problem.
the code that I have try is below:
delegateGetInputReportData getInputReportDelegate = null;
getInputReportDelegate = new delegateGetInputReportData(myAccessForm);
base.Invoke(getInputReportDelegate,/*args*/value);
a new delegate method is created on each data receive event.
in myccessForm I try
TextWriter tx = new StreamWriter("Data.txt");
tx.WriteLine(index +" " + s1.ToString() + "0" + s2.ToString() + "\t\t" + str + "\t\t" + p.ToString());
but it causes an exception that file is used by another program I tried to solve problem by using mutex but It does not work.
|
|
|
|
|
Dear Sirs,
I searched online and the forums and can't find the answer to my question. I would like my program to hide its console window in a managed way, but only AFTER allowing the program to output there. Basically, it goes like this:
public .ctor()
{
_Init();
_Open_SS();
System.Console.Hide();
}
So, if anyone knows how to do this in a MANAGED-ONLY context (I don't want to use DllImport("Kernel32.dll")]extern int FreeConsole(); ). Thanks in advance for your help!!
In Christ,
Aaron Laws
http://ProCure.com
|
|
|
|
|
I know you said Managed code, however I don't see any way of avoiding it as the console is an unmanaged host for the application output. However I would recommend
[DllImport("user32.dll")]static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
rather than FreeConsole as you don't really want to detach the process from the console, just hide the console. Well, having said that, maybe you do, but I wouldn't.
If you have knowledge, let others light their candles at it.
Margaret Fuller (1810 - 1850)
www.JacksonSoft.co.uk
|
|
|
|
|
I use FreeConsole for applications than can be run in either console or GUI mode.
|
|
|
|
|
Hey,
I'd like a control to stretch to it's parents' size in several steps. I have accomplished this, but the result isn't statisfying. This is because im using (Control.) DrawToBitmap in a for loop, which builds up memory pretty fast. I can solve this by using GC.Collect(), but that doesn't look very professional. Thus i'm looking for an alternative, that makes a control stretch in several steps (as in an animation) without flickering. (Perfectly smooth) I'd appreciate some ideas on how to solve this problem
Thanks in advance,
Zaegra
Motivation is the key to software development.
|
|
|
|
|
Dear Mr. Viagra,
There might be many ways to do this. Is this in the on-paint method of said control, or is this a child control? Perhaps you're just making a bitmap show up on your Panel , and it should change size dynamically. Well, here's a go: Create a Control : Panel , and override its OnPaint method to do something like this:
e.Graphics.Clear(BackColor);
e.Graphics.DrawImage(image, new System.Drawing.Rectangle(0, 0, ClientSize.Width-1, ClientSize.Height-1)); which will automatically scale. (Be sure to override OnResize with Invaliate(true); to make sure that a full redraw is done.) Then, in the parent form (with the custom Control:Panel as a child control), run something like:
for (int a = 0; a < 500; a++)
Control.Size = new System.Drawing.Size(a,a);
There's an attempt to answer the question, but you have given VERY little information.
Warning:I have not tested any of the code above, so it might not work.
Good luck!
In Christ,
Aaron Laws
http://ProCure.com
|
|
|
|
|
LimitedAtonement wrote: Dear Mr. Viagra
Well, that's not really what i'm trying to accomplish. This stretches the entire control, and thereby changes the interior arrangement of the items (e.g a listview). It has to look like the control "freezes", then stretches to it's parent size and when it has reached that size it can return to it's old size. Don't ask me why, it's just a fancy GUI animation. And I know i can do this by using DrawToBitmap (which basically makes a screenshot of the control) and stretching that. But when I do that, the animation flickers because I have to use the .Update() method on the control. Any more idea's?
Thanks for your reply though, it gave me some idea's , but just not enough
Greets,
Zaegra
Motivation is the key to software development.
|
|
|
|
|
|
LimitedAtonement wrote: Dear Mr. Viagra,
That's quite the typo.
|
|
|
|
|
What sort of controls you are talking about ?
Are you talking about visual elements? How about Anchor / Dock properties. Have you tried them ?
|
|
|
|
|
I'm talking about a listview, but it should basically work for every control. I need to: 1) Create a bitmap of the control using Control.ToBitmap(), 2) Calculate the aspects ratio between the size of the control and it's parent and 3) Stretch the bitmap and draw it. 4) Repeat so that it looks like an animation. But I've tried to set the backgroundimage, but it won't redraw automatically. Therefore I implemented the Control.Update() method, but this results in a) Good Animation but b) Flicker. And I don't want the flicker
You understand?
Thanks for your interest!
Zaegra
Motivation is the key to software development.
|
|
|
|
|
Hi,
1.
You don't need GC.Collect(), using it is a bad idea most of the time.
You should however Dispose() of all disposable objects when you no longer need them; prime candidates might be Graphics, Image, Bitmap, Font and then some.
2.
I'm not sure I understand your question. If what you need is a non-functional small Control, that slowly grows, and only becomes functional in its final size, then I suggest you:
- create the final Control on a Panel "panelCanvas" that is NOT shown on your Form;
- turn it into a Bitmap once;
- show an empty Panel "panelEmpty" on your Form, onto which you paint the Bitmap in varying sizes until you reach the final size (use Paint handler, a Windows.Forms.Timer and Panel.Invalidate)
- finally remove panelEmpty and add panelCanvas to Controls.
Of course you should do all of this with a Form that is double-buffered.
Luc Pattyn [Forum Guidelines] [My Articles]
I only read code that is properly indented, and rendered in a non-proportional font; hint: use PRE tags in forum messages
|
|
|
|
|
Well, the link provided below contains an AVI file with what I am trying to accomplish. It will definately clarify things.
[url=http://www1.zippyshare.com/v/64422131/file.html]example.avi[/url]
Even in the example you can see the flicker that occurs.
Below is the code that i'm using for the 'animation':
(PS: panel1 is the panel that contains the listview that needs to be stretched)
public void Animate(Control Ctrl, int Steps)
{
Bitmap OriginalView = new Bitmap(Ctrl.Width, Ctrl.Height);
Ctrl.DrawToBitmap(OriginalView, new Rectangle(0,0,Ctrl.Width,Ctrl.Height));
int ParentWidth = (int)Ctrl.Parent.Width;
int ParentHeight = (int)Ctrl.Parent.Height;
int wGrowth = (int)(ParentWidth - Ctrl.Width)/Steps;
int hGrowth = (int) (ParentHeight - Ctrl.Height)/Steps;
panel1.BackgroundImage = OriginalView;
Ctrl.Visible = false;
for (int i = 0; i < Steps; i++)
{
Bitmap NewRender = new Bitmap(OriginalView, new Size(OriginalView.Size.Width + i*wGrowth, OriginalView.Size.Height + i*hGrowth));
panel1.BackgroundImage = NewRender;
panel1.Update();
}
GC.Collect();
Ctrl.Visible = true;
panel1.BackgroundImage = null;
panel1.Update();
}
And to end up: The dispose method won't work. If i do it throws me all sorts of error of which I still have to find out their sources...
Thanks again for your time and idea's,
Zaegra
Motivation is the key to software development.
|
|
|
|
|
Dear Mr. Viagra,
Take a look at the property DoubleBuffered . It is used on any control (the control that is updating over and over) to prevent flickering.
In Christ,
Aaron Laws
http://ProCure.com
|
|
|
|
|
Hi,
I've now created a little article[^] that explains how to animate GDI+ on WinForms.
Luc Pattyn [Forum Guidelines] [My Articles]
I only read code that is properly indented, and rendered in a non-proportional font; hint: use PRE tags in forum messages
|
|
|
|
|
That's exactly what I need, thanks Luc!
Motivation is the key to software development.
|
|
|
|
|
Dear Mr. Pattyn,
I couldn't see a way to contact you in your `little article.' But, I thought I would cite something I saw in MSDN:
"
To fully enable double-buffering, you can set the OptimizedDoubleBuffer and AllPaintingInWmPaint bits to true. However the preferred method for enabling double buffering, which yields the same result, is to set the DoubleBuffered property for the control to true.
"
Nice article, though!
[EDIT]
http://msdn.microsoft.com/en-us/library/system.windows.forms.controlstyles.aspx[^]
Paragraph 3 of Remarks.
In Christ,
Aaron Laws
http://ProCure.com
|
|
|
|
|
Hi Aaron,
thanks for your feedback.
I have updated the article, so it now uses the Control.DoubleBuffered property.
Cheers.
Luc Pattyn [Forum Guidelines] [My Articles]
I only read code that is properly indented, and rendered in a non-proportional font; hint: use PRE tags in forum messages
|
|
|
|
|
a
modified 23-Nov-14 7:02am.
|
|
|
|
|
Create a user control, and use its paint event. Then you can draw it however you want and give it a function like...
int percentToDraw;
void UpdateProgress(int percent)
{
percentToDraw = percent;
this.Invalidate();
}
void OnPaint(object sender, PaintEventArgs e)
{
}
Life goes very fast. Tomorrow, today is already yesterday.
|
|
|
|
|
Check out Ruler Control[^]
It was top of the list in Google for 'C# Ruler'.
If you have knowledge, let others light their candles at it.
Margaret Fuller (1810 - 1850)
www.JacksonSoft.co.uk
|
|
|
|
|
Hi. I trying to get caller ID using tapi3lib examples from this forum.
I tried with multiples codes but ever some errors happens.
case TAPI3Lib.CALL_STATE.CS_OFFERING:
addtolist("A party wants to communicate with you!");
ITCallNotificationEvent cne;
ITCallInfo ci = cne.Call;
CALLINFO_STRING ci_s;
string callerid = ci.get_CallInfoString(ci_s);
MessageBox.Show(callerid, "Incoming call");
break;
error messages:
Error 4 Use of unassigned local variable 'cne' D:\tapi3_dev\tapi3_dev\Form1.cs 536 41 tapi3_dev
Error 5 Use of unassigned local variable 'Caller_ID' D:\tapi3_dev\tapi3_dev\Form1.cs 538 65 tapi3_dev
Anyone could help me to get caller id with any exaple code, please?
Regards and thanks a lot.
|
|
|
|
|
grefu wrote: ITCallNotificationEvent cne;
ITCallInfo ci = cne.Call;
cne has not been initialised to anything so cannot be used yet.
grefu wrote: CALLINFO_STRING ci_s;
string callerid = ci.get_CallInfoString(ci_s);
I suspect the same holds true of ci_s .
|
|
|
|
|
Ok, but how must I initialize those variables?
Regards.
modified on Thursday, November 19, 2009 3:34 AM
|
|
|
|
|
grefu wrote: Ok, but how must I initialize those variables?
You need to set them to instances of their classes. I have no idea what this entails as I know nothing of Tapi3lib; you need to read the documentation.
|
|
|
|