|
[DllImport("user32.dll")]
private static extern IntPtr WindowFromPoint(Point point);
From Eric Gunnersons Win32Window library on GotDotNet.com
Who is this miscrosoft, and what devilish plans have they for us?
|
|
|
|
|
I'm sure that others have noticed this behaviour, but I have searched all over for a resolution to no avail, so I'll post it here.
When using windows XP visual styles (via manifest file) with a TabControl there are numerous display issues.
The most well-known is the fact that the TabPage background is not correctly painted with the WinXP gradient - this I actually don't care about as my tab pages are filled with either listviews or picture boxes, so the background is irrelevant. This issue has of course been addressed here on the CP already.
The major problem for me is that of you select anything other than a top alignment for your tabpages in conjunction with using winXP visual styles the tabs themselves are drawn totally messed up, along with the text on tabs mysteriously dissapearing.
The app I am developing is heavily reliant on tabcontrols, using a mixture of regular (align=top) controls, with a few left-aligned tabcontrols. Resorting the top-aligned controls throughout will simply waste far too much desktop space, so is not an option.
So here's where I'm at - it's either ditch WinXP visuals, or draw the tabs myself. I really don't want to have to resort to losing the XP look, so drawing the tabs myself is the way I'd like to go. The problem with this is that I simply cannot find an overridable method that allows me to paint the actual tabs (painting the tabpages is no problem), and at this stage the thought of writing my own TabControl from scratch is almost enough to make me turn to the drink.
Can anyone help?
|
|
|
|
|
Furty wrote:
So here's where I'm at - it's either ditch WinXP visuals, or draw the tabs myself. I really don't want to have to resort to losing the XP look, so drawing the tabs myself is the way I'd like to go. The problem with this is that I simply cannot find an overridable method that allows me to paint the actual tabs (painting the tabpages is no problem), and at this stage the thought of writing my own TabControl from scratch is almost enough to make me turn to the drink.
No dont drink! How about using the MagicLibrary's Dockin Controls. I have found the are almost a substitute for MDI forms and the TabControl.
Who is this miscrosoft, and what devilish plans have they for us?
|
|
|
|
|
Ah, come on. Drinking in moderation never hurt anyone and has even helped to churn out some interesting code form time to time.
Just wanted to vouch for Magic. We use them a lot at work and I and my colleagues have even suggested many improvements to the author. There's not very good documentation, but after "suggesting" that every third-party control libraries "require" it and throwing the NDoc project I help with at him and offering to help with the documentation process, docs will soon be on the way.
Other than that, you can't really find a better *free* library - or even a commercial library for that matter.
"Well, I wouldn't say I've been missing it, Bob." - Peter Gibbons
|
|
|
|
|
Heath Stewart wrote:
Drinking in moderation
moderation being the keyword. A bender on Wednesday night rendered me useless till yesterday.
Heath Stewart wrote:
There's not very good documentation
I agree, was a bit difficult to gather at first, but you tend to get the hang of it.
Heath Stewart wrote:
Other than that, you can't really find a better *free* library - or even a commercial library for that matter.
I agree again COmmercial quality for free I just wish I was a commercial programmer.
Who is this miscrosoft, and what devilish plans have they for us?
|
|
|
|
|
About 2 hours before I posted the orginal message here I downloaded v1.71 of Magic - the problem is I really do need to have some left-aligned tabs (vertical) as well as standard tabs. The thing with the base library control is, you can specify OwnerDrawFixed, but I just can't find ouy how to actually paint the tabs..
|
|
|
|
|
Magic will do vertical tabs (note, not "left-aligned" - that has to do with text alignment). He even has an example of it in his sample application.
As far as owner drawing, you basically have to take the PaintEventArgs.Graphics property and go at it. Take a look at the System.Windows.Forms.ControlPaint class. It has a lot of helpful functions to draw things like borders and glyphs. It can simplify your UI and keep it consistent with Windows.
"Well, I wouldn't say I've been missing it, Bob." - Peter Gibbons
|
|
|
|
|
Unfortunaltely, MagicTab has a problem with focus on complicated controls. I use MagicTab, control inherited from DataGrid on it, and some inherited controls on this inherited DataGrid. Keyboard works ok, but after mouse click focus "goes" from my controls to DataGrid. May be it's my mistake, but these objects on Microsoft Tab works ok ...
Sincerely
AW
|
|
|
|
|
Controls placed on MagicTab (instead of DataGrid) works ok.
Simplified controls (with no sub-controls on them) works ok.
Sincerely
AW
|
|
|
|
|
if you could only...code one language for the rest of your natural life...what would the language be ? ..as for me... i think C#....cause its the only one i really know lol..
|
|
|
|
|
C# is nice, my choice at the moment as well, but as I'm starting university this year, i'll be moving to C/C++. AT least I feel C# gave a good background on the working of these languages.
Who is this miscrosoft, and what devilish plans have they for us?
|
|
|
|
|
Definitely C++. C# is nice and all, but it's not practical in every application. For modern systems, C++ is like the glue that ties everything together and is the groundwork from which almost everything was written, from compilers to back-end functions to COM.
"Well, I wouldn't say I've been missing it, Bob." - Peter Gibbons
|
|
|
|
|
The thing is, you have to use different languages within different contexts.
You probably won't ever do device driver dev. in C# or client-side scripting in C++.
Cheers,
Simon
"The day I swan around in expensive suits is the day I hope someone puts a bullet in my head.", Chris Carter.
animation mechanics in SVG
|
|
|
|
|
I've seen this in the Managed DirectX samples:
MouseState mouseStateData = new MouseState();
// Get the current state of the mouse device.
mouseStateData = applicationDevice.CurrentMouseState;
Could you explain me why there is a need to instanciate the MouseState class? Doesn't the property return an object? Isn't the expression "new MouseState()" redundant?
|
|
|
|
|
You are most likely correct, and I have seen many such examples in various .Net docs. I have always been able to remove the unnecessary instantiation, as one would expect. Do not assume example code writers have their code carefully checked. They don't have to produce good code, and rarely do they ever receive feedback.
Cheers
|
|
|
|
|
I used the DataTable.Rows.Find() to get a DataRow. Now how do I obtain that row's table index?
I dont see any DataRow.Index property or DataTable.Rows.IndexOf(PrimaryKey) method.
|
|
|
|
|
Hey every one, does any one know what the hell is wrong with this code =/
i am trying add a Node(file to the treeNode)works fine except
that
i am doing a check to see that the user wont add a same file 2wice but its
not returning a right value
its the second if statment
can you tell me whats wrong with my code thx
//Add Nodes to Tree
<br />
private void Add_Click(object sender, System.EventArgs e) {<br />
<br />
TreeNode currentNode;<br />
<br />
<br />
OpenFileDialog ofd = new OpenFileDialog();<br />
<br />
ofd.Filter="lib files (*.dll)|*.dll|Executable files(*.exe)|*.exe";<br />
<br />
<br />
if(ofd.ShowDialog()==DialogResult.OK){<br />
<br />
currentNode = new TreeNode(Path.GetFullPath(ofd.FileName));<br />
<br />
<br />
if(treeView1.Nodes.Contains(currentNode)==false){<br />
<br />
treeView1.Nodes.Add(currentNode);<br />
<br />
numberFiles = treeView1.Nodes.Count;<br />
<br />
Counter.Text=numberFiles.ToString();<br />
<br />
}<br />
<br />
else{<br />
<br />
MessageBox.Show("File AlreadyBeen selected","Warnning");<br />
<br />
currentNode=null;<br />
<br />
}<br />
<br />
}<br />
<br />
}<br />
Thanks in Advance
Amir
|
|
|
|
|
Amir G wrote:
currentNode = new TreeNode(Path.GetFullPath(ofd.FileName));
if(treeView1.Nodes.Contains(currentNode)==false){
You are comparing 2 instances of TreeNode objects, which will allways return not equal, unless you comparing it from a reference (but thats not what you should be doing). The TreeNode object has exactly what you are looking for in the Tag property. Here you can add some string or number and use that to check for equality, not the actual TreeNode objects.
Who is this miscrosoft, and what devilish plans have they for us?
|
|
|
|
|
leppie wrote:
Here you can add some string or number and use that to check for equality, not the actual TreeNode objects
could you please explain a bit more i dont follow you
thx
|
|
|
|
|
currentNode = new TreeNode(Path.GetFullPath(ofd.FileName));
currentNode.Tag = Path.GetFullPath(ofd.FileName);
if(CheckNode(currentNode)){
Then
private bool CheckNode(TreeNode node)
{
string test = (string) node.Tag;
foreach (TreeNode n in treeView1.Nodes)
if (n.Tag == node.Tag)
return false;
return true;
}
Who is this miscrosoft, and what devilish plans have they for us?
|
|
|
|
|
Your code is written well, but Contains() does not do what one might expect it to.
I have had exactly the same problem, and lost a lot of hair researching this. The CLR TreeView has no way of finding a node by name, even though the Contains() method looks like it would provide that functionality. Contains() returns true only if the node passed to it, is the exact same node as one already in the TreeNodeCollection. I do not see a lot of use for such functionality, but that is the way it is.
What we are interested in is a way to see if there is already a node with a specific name (or full path). There are a number of ways of testing this, and most rely on enumerating some nodes, and seeing if one of the names matches the one being sought. Incidentally, a TreeNodeCollection can contain multiple nodes with exactly the same name, which might be one reason searching for a "unique name" was not implemented.
In your case, it looks as though each node's name contains full path info, so this might not be too difficult. In my case, I had nodes branched-out into dir trees, which required parsing each path into separate dir names, and walking the tree.
Anyway, I enumerated by grabbing the node returned by FirstNode, which gets a node's first child node. With the node returned (if not null), I kept calling NextNode to get the rest of the child nodes. I did this until null was returned (no more child nodes). If there is a match, continue deeper if necessary, using the same methods (I used recursive calls).
In my case I wrote a search function that took an array of node names, which were parsed from the path to look for. I hope some of this helps.
Cheers
|
|
|
|
|
Thank you Both Jeff J for that great comment and help and Leppie for explanation and the code
I appreciate it
Amir
|
|
|
|
|
i use sharp develop most the time these days...(cant afford vs yet ) anyways i try get say a icon that i want embedded in my dll to embedd but it doesnt seem too do it. (im a total newb when it comes to embedding anyway)can someone help me by supply code too get me on my feet? i have never used reflection but i want too use it so i can put all my icons in one neat little dll. please supply code for embedding and then calling a iconfile (and say setting it too...this.Icon or something) if you have the time it would really really really help me out.. thanks alot.
Icon File Name : Icon_Question.ico
P.s: i tryed reading the article's on reflection at the codeproject but it wasnt explained clear enough lol.. i can understand pure code just fine though (is that strange?)
jesse M
|
|
|
|
|
I think you are looking for resources, not reflection . That mite help you, unfortunatley I havent worked with it before
Who is this miscrosoft, and what devilish plans have they for us?
|
|
|
|
|
ResourceReader
taken from .Net Sdk Documentation
i found out how too use the ResourceReader/writer but it doesnt cover the problem
<br />
using System;<br />
using System.Resources;<br />
<br />
public class SampleClass<br />
{<br />
public static void Main()<br />
{<br />
IResourceWriter rw = new ResourceWriter("MyResources.resources");<br />
rw.AddResource(@"C:\myPrograms\NetText\icons\icon_10.ico", "Stop");<br />
rw.AddResource(@"C:\myPrograms\NetText\icons\Icon_Question.ico", "Question");<br />
rw.AddResource(@"C:\myPrograms\NetText\icons\Icon_14.ico", "Folder");<br />
rw.Close();<br />
}<br />
}<br />
<br />
i noticed that resource reader only makes a resource file points too a perticular directory / file which doesnt help me...cause im trying too keep my icons hidden so if someone deletes them..the program wont keep throwing exceptions.. and ideas leppie ?
email me at : res1s5yd@verizon.net if u need more info or anything leppie.
jesse M
|
|
|
|