|
Hey
I am developing a simple Client program and i have made an Windows Control Library(DLL file) that i am adding to my client.
AnyWay This Control contains a Bitmap picture that is 272x600 wit 3 buttons on it with is 202x36, all is BMP.
When moving other Windows ower my Client(where the Bitmaps is) thay are updated wary slow? Is there any easy way to make it go faster?
I am loading all pictures in to Bitmaps object on startup and then adds them to the right controls.
Best Regards
Jimmy
|
|
|
|
|
|
Thanks
i have added the following line ni bouth the MainClient(project) and Windows Control Libraray(the control) in theres cunstructer:
SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.DoubleBuffer | ControlStyles.UserPaint, true);
But this dosent do anything. When i am moving an other window ower the bitmaps the window that i am moving over is lagging on the bitmap creating alot of windows, and it take about 1 sec before the bitmap is updated and the Window crap on the bitmap is over painted.
Im i doing any wrong ? shold i not be abled to move a Window over my project with a bitmap in with out this problem?
Best Regards
Jimmy
|
|
|
|
|
Try calling the method inside of an event handler for the Load event and add a call to the UpdateStyles method, which forces the assigned styles to be reapplied to the control.
www.troschuetz.de
|
|
|
|
|
Do you mean that you could call this in the contructer of my Main project
SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.DoubleBuffer | ControlStyles.UserPaint, true);<br />
this.UpdateStyles();
This does not changes
Or how do you mean i shold add it?
|
|
|
|
|
I'm not sure if it's sufficient, if you call it only in your main project. I never used double buffering myself (never needed too), but it was sometimes mentioned in this forum when talking about flickering or drawing problems.
But I'm pretty sure that placing the code inside the constructor won't have any effect cause the documentation for the UpdateStyles method states that "The UpdateStyles method has no effect if the IsHandleCreated property value is false.", which is the case during construction. So try moving it into an event handler for the Load event.
www.troschuetz.de
|
|
|
|
|
Thanks!
I have tryed your ide and it siems to work a little.
But the buttons and so on that is placed on the bitmap is steal lagging alot, when moving window over them.
Do i realy have to make my own buttons and use this Style on them?
|
|
|
|
|
I'm glad that I could help a bit
Unfortunately I can't answer your last question cause as I said I've never used double buffering myself and therefor haven't that much experience and knowledge. Sorry.
www.troschuetz.de
|
|
|
|
|
I have a solution that I have created using .Net remoting and am having a lot of trouble upgrading it to use events.
The solution uses a remote singleton object which I'm hosting with my own server. A requirement of the solution is that the remote object's assembly must remain seperate from the client so I am using an interface.
I have created a seperate assembly so that it can be referenced by both the client and the remote object's assemblies. This new assembly contains a single class that implements the Activator.GetObject method and subscribes to the remote event. After a little playing around with the formatter sink classes I can instantiate this class from the client application and it seems to successfully subscibe to the remote event (or at least it no longer throws exceptions). However the client side event handler is never called. I have implimented tracing on the server side to ensure that the event is being raised and event handlers are working there.
Does anyone know where I'm going wrong?
|
|
|
|
|
Hellow Friends,
My Problem is i have created a dll using C# and i have made every necessary thing to make it interoperatable and i have called it using VC++ 6.0.:-> sucessfully....
But now i need to call the same using Borland C++..
Can anyone help me doing this...
i have searched a lot but i dint find any document related this ISSUE...
Thanx...
|
|
|
|
|
Hi everybody... I got a short question about one nasty little API function which I am in most dire need of. I need to somehow update the translucency / transparency setting of a normal window. Say I got two buttons and a Scrollbar. I need to somehow call the UpdateLayeredWindow function each time the scrollbar is modified so I can modify the translucency (opacity) level of my window. So far, I need to DESTROY and create the window AGAIN and use "SetLayeredWindowAttributes" to achieve this. But it's not a solution, this is a workaround and it's not nice at all : ), I think you agree : ).
Here's what I got so far... (this is VB6 code, but any language will do, I can adapt to anything, the only thing that I need is to actually make this WORK : ) ).
<br />
UpdateLayeredWindow Me.hwnd, Me.hdc, ByVal 0, m_windowSize, m_mainSurfaceDC, <br />
m_srcPoint, 0, m_blendFunc, ULW_ALPHA
You don't have to care about the parameters. My question is not related to those. My question is... can this nasty function be used to set a NORMAL WINDOW? I mean not a bitmap! A window... with some buttons and stuff on it. I am sure it must be possible, but I just don't know how. It's one nasty little function and I can't find anywhere some good documentation about it, only examples that are not working properly or do more than I need this function to do. I Googled for it and 60% of the results were declaring it, but not using it ! HA! Imagine that! : (. The other 40% were either using bitmaps, either not working.
I got one example that uses bitmaps, but that's too complicated and it's not what I need. I tried to put a scrollbar on that window and it wouldn't even appear, of course, since the guy who did this is using some bunch of functions to work with the bitmaps : (.
Thank you a LOT for reading this and I would really appreciate any help, it's for a good cause : ) (freeware application). I sure hope there are some people on the Code Project who ran into this function before.
Just before you ask.... no, I can't use .Net to do this, but some .Net ideas WOULD be usefull since I could at least port it to my VB 6.
Have a nice day everybody : )
The Greater Mind Balance
|
|
|
|
|
1) Cross posting in multiple forums on the same site is considered very rude!
2) Posting VB code and asking VB questions in a C# or C++ Forum could get you strung up by your nads! Be prepared to receive much abuse.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
hi all,
please tell me how can i capture TAB Key and is there is any property for automatic scroll in a tab control in .NET Compact framework.
Sri
|
|
|
|
|
I am a student working on a stanalone project.
I have problem making a double click event on button. Is it that c# cannot do it? Have to use multi language like include a VBscript? If yes how to use multi language? Can i see a executable source code cause i m quite a slow learner.
Example: how to make a window based application that if u double left click your button. The label will be labeled "Hi", and if u single left click the button it will display "Hello".
It is a simple example i give to lower complicate my question. I have already spend quite some time developing my other functions in c# and got stuck to this problem therefore i wish not to change my programming language but import some other language to my c# project if necessary.
Please help fast... deadline coming near...
|
|
|
|
|
You don't have to use any other language here.
You'll have to handle the Click event of your button and determine inside the event handler whether two consecutive clicks are close enough to be considered a double click. To achieve this, start a simple timer in the event handler and check whether its interval has elapsed. If not, the user double-clicked your button.
www.troschuetz.de
|
|
|
|
|
Stefan Troschütz wrote:
To achieve this, start a simple timer in the event handler and check whether its interval has elapsed
This is an old VB trick, and is more or less obsolete with .NET
An easier way is to handle the MouseDown event on your button, which raises an event with MouseEventArgs which in turn has a Clicks property. Here is some simple code to demonstrate:
private void button2_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
Console.WriteLine(e.Clicks);
}
If you associate this with a button (in my case it was named button2), run the project in debug mode, and click the button while watching your Output window you should see a list of 1's & 2's coming up based on the number of clicks recieved on the button. So your code should read along the lines of
if(e.Clicks == 1)
else
HTH
|
|
|
|
|
|
Sorry, me very beginner...
How to do that?
|
|
|
|
|
|
Thanks guys for the advices. It have help me a lot.
|
|
|
|
|
Following is a sample of a C# class I created for one of my software projects.
I use it to register my application in the shortcut menu (right-click menu) of
all the files and folders of the HDD. I chose a simple registry approach to
this problem beacause I find it much easier than buiding and registering a COM
object (and I must say I'n not really into COM programming right now, so it
will be kinda hard for me to learn now, having to finish my project a.s.a.p.).
Basicly, the Associate function takes three parameters, the name of the
extension, the desired text to display and the path to the .exe file. (EG. If I
need to register DoIt that is located at C:\DoIt.exe and display the text DoIt
in the menu i use Associate("DoIt", "&DoIt", "C:\DoIt.exe") ). It works by
going to HKEY_CLASSES_ROOT in the registry and opening/creating the
AllFileSystemObjects subkey, whitch handles all the files and folders. It then
creates three new subkeys in this order shell \ extensionName \ command and
registers the .exe so that it is displayed in the right-click menu.
Everything works well, but I still have a problem. I need the path of the file
or folder on whitch I right-click to be sent as a parameter to my main
application (same as using command-line parameters) and I do this by adding %1
after my application's path in the registry (line 26 of the class). However,
this works only if I have a single file or folder selected and I was wondering
if it is possible to use this method to send multiple paths as parameters to my
application (by selecting multiple files or folders or both).
I would really appreciate your help beacause I'm... well, stuck. 10x a lot.
P.S. Please don't hate me for the long description or for the almost childish
manner that I used to express it, but I wanted my problem thoroughly
understood. No offence meant.
using System;
using Microsoft.Win32;
namespace ShellExtension
{
public class ShellExtension
{
public ShellExtension() { }
public void Associate(string extensionName, string extensionText, string filePath)
{
RegistryKey ClassesRoot = Registry.ClassesRoot;
RegistryKey AllFileSystemObjects = ClassesRoot.OpenSubKey("AllFileSystemObjects", true);
if (AllFileSystemObjects != null)
{
RegistryKey shell = AllFileSystemObjects.OpenSubKey("shell", true);
if (shell != null)
{
shell.SetValue("", extensionName);
shell.CreateSubKey(extensionName);
RegistryKey shell_1 = shell.OpenSubKey(extensionName, true);
shell_1.SetValue("", extensionText);
shell_1.CreateSubKey("command");
RegistryKey shell_2 = shell_1.OpenSubKey("command", true);
shell_2.SetValue("", "\"" + filePath + "\" \"%1\"");
return;
}
else
{
AllFileSystemObjects.CreateSubKey("shell");
this.Associate(extensionName, extensionText, filePath);
return;
}
}
else
{
ClassesRoot.CreateSubKey("AllFileSystemObjects");
this.Associate(extensionName, extensionText, filePath);
return;
}
}
public void unAssociate(string extensionName)
{
RegistryKey ClassesRoot = Registry.ClassesRoot;
RegistryKey AllFileSystemObjects = ClassesRoot.OpenSubKey("AllFileSystemObjects", true);
RegistryKey shell = AllFileSystemObjects.OpenSubKey("shell", true);
if (shell.OpenSubKey(extensionName) != null)
{
shell.DeleteSubKeyTree(extensionName);
}
return;
}
}
}
Born from the dark, in the black cloak of night.
|
|
|
|
|
when i write the date in win.txt
it was like this
Lsbox_Date.Items.Add(DTP_Today.Value.ToShortDateString());
so if the regional setting was set to MM/dd/yyyy it will write the date the same as regional setting
so i change it to this which always gonna be dd/mm/yyyy
Lsbox_Date.Items.Add(DTP_Today.Value.Day.ToString()+
"/"+DTP_Today.Value.Month.ToString()+"/"+DTP_Today.Value.Year.ToString());
when i read the win.txt
this code is reading the date from win.txt
StreamReader Read_key = File.OpenText(@windir+"\\Win.txt");
string key_Trim;
string key;
key_Trim = Read_key.ReadLine();
key = key_Trim.TrimEnd();
Read_key.Close();
Convert the key to datetime
DTP_Key.Value = Convert.ToDateTime(key.ToString());
so if the regional setting is set to dd/mm/yyyy i have no Problem coz the format is the same
but if the regional setting is set to mm/dd/yyyy then i get an error converting the key string.
i need help pls ASAP
|
|
|
|
|
Use a explicit CultureInfo for writing and reading the date to be independent from setting of the PC:
System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("en-US");
DTP_Today.Value.ToString("d", culture);
Convert.ToDateTime(key.ToString(), culture);
www.troschuetz.de
|
|
|
|
|
is it possible to have two assemblies having same attributes.
please let me know if there are any good documents for this.
|
|
|
|
|
I'm not sure that I understand what you're trying to accomplish here, but... As far as I know, the only requirement for an assembly to live in the GAC is that it has a unique strong name. Google will yield plenty of results, if you search, but there are a couple of links to get you started:- An entry[^] on the GAC from Prabhu Ram Prasath's blog
- Jan Seda's article[^] here on CodeProject.
Hope that helps.
--Jesse
|
|
|
|