|
DirectX has DirectInput, which I think works better for input in games. You can also use keydown and keyup to track which keys are down at once.
Christian Graus - Microsoft MVP - C++
"also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
|
|
|
|
|
Usually for games i don't do any actions on the keypress event, instead i set a flag to say that a key is pressed, and then when the main logic loop runs through, it checks the flags and performs different actions based on whether or not a key is pressed.
for example:
bool key = false;
onKeyDown() {
key = true;
}
onKeyUp() {
key = false;
}
main()
{
if(key)
}
My current favourite word is: PIE!
Good ol' pie, it's been a while.
|
|
|
|
|
How would you know which key id down?
- "Achieving all knowledge does not mean achieving all wisdom."
- "What makes you smart
?"
|
|
|
|
|
So how can you tell which key is down? I figured out the KeyDown / KeyUp, but I need to know KEYS now. Thanks so far, though.
- "Achieving all knowledge does not mean achieving all wisdom."
- "What makes you smart
?"
|
|
|
|
|
Hi
I've just created a simple application loader which recognizes a certain attribute i created and then loads a static method Load()
this is used to load particular classes which have to run as the application starts.
the weird thing is that in one of the classes the static constructor is called twice:
first time - when the application loader calls it via reflection
second time - when another part of the application uses this class for the first time.
if anyone has a clue
thanks
gil
|
|
|
|
|
gilaz11 wrote: this is used to load particular classes which have to run as the application starts.
the weird thing is that in one of the classes the static constructor is called twice:
first time - when the application loader calls it via reflection
second time - when another part of the application uses this class for the first time.
This only happens with one of the classes?
"If an Indian asked a programming question in the forest, would it still be urgent?" - John Simmons / outlaw programmer
I get all the news I need from the weather report - Paul Simon (from "The Only Living Boy in New York")
|
|
|
|
|
Hi!
form1 has a function to draw a line.For example: public void draw();
I also have form2 with a button.
when i click this button, a line will be drawn on form1.
(in the function of button click event, i call draw like this:
form1 myform=new form1();
myform.draw();
)
but it doesn't work.
So what should i do?
Best Regards!
|
|
|
|
|
It works, you just don't see it. The line is drawn on form1 which is invisible as you haven't displayed it.
|
|
|
|
|
Form1 appears behide form2, when i click button, i choose form1 to watch but i did not see the line.
So how can i see the line on form1? (because your reply is i did not display form1)
Thanks for replying!
|
|
|
|
|
When you call form1 myform=new form1(); you are creating a new instance of Form1 and the line is drawn on the new instance.
|
|
|
|
|
oh! i got it.
Back to the first problem, how to draw line on form1 (first form1) from button of from2? and how to display new form1?
Thanks for replying!
|
|
|
|
|
In order to do that you should make draw method of class static. As for the second question you can call either Show or ShowDialog method on the new instance depending on whether you want it to be non-modal or modal. By the way, all drawing code should be placed in the Paint event of the form so that it gets drawn when the form is repainted
|
|
|
|
|
if i make draw method of class static, it has one error like this:
(graphics g=this.CreateGraphics();)
Error 1 Keyword 'this' is not valid in a static property, static method, or static field initializer F:\Bk_University\C#\TextBox_Test\TextBox_Test\Form1.cs 26 24 TextBox_Test
On the other hand, if i use static for draw method, i can't call draw() from form2.
Thanks for replying!
|
|
|
|
|
Forms need to redraw themselves when they are uncovered, restored maximised, resized and many other reasons.
The reason you don't see the line is that your draw it before the form is shown. When the form is shown it needs to redraw itself so anything that was drawn on the form is relaced. (Well, it isn't so much replaced, but drawn because it was never displayed the first time)
You need to override the OnPaint method to draw on the form and keep it persistant. The OnPaint will be called whenever the display of the form is damaged and needs to be redrawn.
|
|
|
|
|
Thanks!
I can see the line on the new form1 but i want to see it on the original form1 (the first form1). I can't override onPaint() again because it was used for another work(for example it was used to drawing rectangel.If i call onPaint() which is overrided, it will draw line and also draw rectangel.But i want to draw line only)
So i have to write another function: draw(). Is there any way to do?
Thanks for replying!
|
|
|
|
|
i`m beginner wrote: I can't override onPaint() again because it was used for another work
The only function of OnPaint is to draw stuff. It doesn't matter what it is. It draws everything. You cannot use it for one function and something else for another. Everything goes through the OnPaint method.
Your OnPaint needs a mechansim to decide what it needs to draw. It can then call the appropriate methods. e.g. Your OnPaint method can call your Draw method.
|
|
|
|
|
Colin Angus Mackay wrote: Your OnPaint needs a mechansim to decide what it needs to draw. It can then call the appropriate methods. e.g. Your OnPaint method can call your Draw method.
i can't understand clearly, Can you give me an example about my problem?
Thanks for replying!
|
|
|
|
|
Hi,
this is a standard text on painting, I provide it as a general hint
there are several steps to draw something so it becomes visible on the screen:
1.
decide upon what object you want to draw; it normally is a Control (e.g. a Panel) or a
Form itself. I prefer to add a Panel to a Form, then draw on the Panel.
2.
create some variables (Rectangle, struct, class, whatever) that hold the parameters of
your drawing. For a rectangle that could be top and left coordinate, and width+height,
or just a Rectangle. etc.
3.
create a Paint handler for that Panel, and do all your drawing in there, using the
Graphics class and your variables.
4.
when you want to change things, modify the variables and call Panel.Invalidate() or
one of its overloads (for selective invalidation).
5.
If you want to animate things, perform the move (step 4) inside the Tick handler
of a Windows.Forms.Timer
BTW: if you need to create some objects (Fonts, Pens, Brushes, ...) either keep them
alive in class members (hence create them only once); or create them inside the Paint
handler and don't forget to call Dispose() on them.
Luc Pattyn [Forum Guidelines] [My Articles]
this months tips:
- use PRE tags to preserve formatting when showing multi-line code snippets
- before you ask a question here, search CodeProject, then Google
|
|
|
|
|
Thank you so much!
|
|
|
|
|
There are enough problems in this code that I'd say you need to buy a book and work through it.
As for your main question, you'd do this with delegates. Any other solution is a hack. form2 needs to be able to call a method in form1 through a delegate.
Christian Graus - Microsoft MVP - C++
"also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
|
|
|
|
|
Thank you!
|
|
|
|
|
I put some buttons and plot some lines to connect them in a panel, if they are too big and the scrollbar appear automatically. and the size is changed then the scrollbar is changed also.
I have one question: during this, what is changed then? I found the panel size and clientsize are not changed. Because during this, the lines are not connected to the buttons anymore. I want to ajust the lines during this, but what is changed then?
thanks.
|
|
|
|
|
can you please explain in an easy to understand way!! do have a look at "How to get an answer to your question"!!
|
|
|
|
|
hi
I have two monitors and in PenTablet.cpl for a Wacom Bamboo table you can set the input to be taken across both monitors or either one simply by checking a box or two and it takes immediate effect.
I would like to write an app that allows me to change the input area from monitor 1 to monitor 2 and back, is there away to interact with a CPL programmatically or to see how they are doing it?
thanks
|
|
|
|
|
Currently I am writing a program which sends and receives messages
through serial port to a device. I am using C# and Microsoft Visual
studio 2005 for windows program. But my problem is when i try to write
in serial port from my windows a Timeoutexception is thrown. I use
SerialPort class in System.IO.Ports and for writing port i used
write() function under the built in class SerialPort. But when i use
hyperterminal , everything goes fine.
Can anyone say how can i overcome this problem?
Another thing , I have used SerialPort.GetPortNames() to get the list
of serial ports. But sometimes the list of serial ports that is
returned by this method is not same as the list of serial ports shown
in device manager.(Currently SerialPort.GetPortNames() return COM1
and COM3 but no existence of COM3 in device manager) Which method can
i use to get the actual list of serial ports?
Thanks in advance
Nasif Bin Shafi
Nasif
|
|
|
|