|
WM_CTLCOLOREDIT is sent to an edit control's parent window. Now assume I have a System.Windows.Forms.TextBox derived class. And assume I wanted to handle WM_CTLCOLOREDIT from within the class. I am unable to do so currently. How do people handle WM_CTLCOLOREDIT from their derived edit classes?
Nish
Author of the romantic comedy
Summer Love and Some more Cricket [New Win]
Review by Shog9
Click here for review[NW]
|
|
|
|
|
When I was fooling around with implementing a new wrapper for the SysTreeView32 I noticed that most messages like these were reflected back to your class. So in your WndProc for your derived edit control look for messages as:
#define WM_REFLECT WM_USER + 0x400
...
case WM_REFLECT + WM_CTLCOLOREDIT
...
I'm not 100% positive that is the right definition for WM_REFLECT. I remember first seeing this (and copying it) from Lutz Roeder's code for the enhanced toolbar, so check there if the above doesn't seem to work.
--
Russell Morris
"Have you gone mad Frink? Put down that science pole!"
|
|
|
|
|
I understand your Q. now
The Control class handles WM_CTLCOLOR for you and sets the background color and the text color of the dc to that specified in the properties of the Control. So you don't need to handle it.
|
|
|
|
|
Rama Krishna wrote:
The Control class handles WM_CTLCOLOR for you and sets the background color and the text color of the dc to that specified in the properties of the Control. So you don't need to handle it.
Usually we dont need to. But if you handle WM_PAINT yourself, and draw a different color background, then you have a problem. Now when the user types something in, the bgcolor of the text is not your back color
Even specifying the backColor property is useless here. I wasted half an hr over this today. Also discussed with James. He feels that when you handle WM_PAINT yourself somehow WM_CTLCOLOR is handled by the OS
Nish
Author of the romantic comedy
Summer Love and Some more Cricket [New Win]
Review by Shog9
Click here for review[NW]
|
|
|
|
|
Follow Russel Morris's idea. WM_REFLECT is 8192.
|
|
|
|
|
|
|
In the controls constructor add the following line
SetStyle(ControlStyles::UserPaint, true);
|
|
|
|
|
|
|
Hi,
Is there a way to attach a Tag value to each item in a ComboBox (like the Tag property of ListViewItem)?? I need to know the ID of the record in the database while displaying the readable name.
Thanks in advance,
-- LuisR
──────────────
Luis Alonso Ramos
Chihuahua, Mexico
www.luisalonsoramos.com
"Do not worry about your difficulties in mathematics, I assure you that mine are greater." -- Albert Einstein
|
|
|
|
|
The value displayed in a combobox (by default) is obtained by calling ToString() on the item in question.
So the simple answer is to write a class that has your two values and make the ToString() method return the string value.
The better answer is to make the ID and readable name values into properties. Then you can set the DisplayMember and ValueMember properties on the ComboBox to the names of the properties in your class and retreive the value by examining the SelectedValue property to tell which value is selected.
HTH,
James
"Java is free - and worth every penny." - Christian Graus
|
|
|
|
|
About the better way, are the DisplayMemeber and ValueMember and all those properties of the ComboBox itself, or of each item??
So it would be something like cmb.Items.Add(1, "Item #1")??
-- LuisR
──────────────
Luis Alonso Ramos
Chihuahua, Mexico
www.luisalonsoramos.com
"Do not worry about your difficulties in mathematics, I assure you that mine are greater." -- Albert Einstein
|
|
|
|
|
How do I filter out non-standard foreign language fonts like gautami, latha, mangal, shruti and raavi? These fonts are a puzzle. They don't render at all [not even in Word XP]. They show black boxes when you dbl clk them. Rama says they are Indian language fonts. I say they suck!!! Cause they won't render and they return wrong values when you MeasureItem them. Anyone's got any ideas on filtering theme out.
Nish
p.s. Right now I am gonna have to hardcode these 5 fonts into a filter list I think
Author of the romantic comedy
Summer Love and Some more Cricket [New Win]
Review by Shog9
Click here for review[NW]
|
|
|
|
|
|
Can someone point me to the differences between OT and TT? I just noticed OT in Windows XP and for all intents and purposes it seems the same as TT. What's the difference?
-Domenic Denicola- [CPUA 0x1337]
MadHamster Creations
"I was born human. But this was an accident of fate - a condition merely of time and place. I believe it's something we have the power to change..."
|
|
|
|
|
Background:
C# Windows Forms project. I've make a control based on the DataGrid for logging the "progress" of an applications.
I'm looking for a way to have the DataGrid keep up with new items beeing added, by forcing a scoll to the last item after each addition.
Any suggestions would be appreciated.
TIA.
Mike Stanbrook
mstanbrook@yahoo.com
|
|
|
|
|
Use the CurrentCell property to change which cell is visible (ie, set it to the first column in the last row).
It looks really stupid this way; but here is the code to do that
myGrid.CurrentCell = new DataGridCell(rowIndex, 1);
[rant]
Who ever thought it would make sense to assign a cell to the current cell property must've been smoking something at the time. To me this says replace the contents of the current cell with this new cell. Its not until you look at the documentation for DataGridCell that you realize it is used only to identify a cell by location and not to hold the actual contents of it.
[/rant]
James
"Java is free - and worth every penny." - Christian Graus
|
|
|
|
|
Thanks.
I do agree that it doesn't look "elegant".
I also agree it would seem there is "something" missing, but could just be the 'ol VB6er in me..
|
|
|
|
|
I have a control that overrides WndProc . I handle WM_NCCALCSIZE and in the case where LParam is true I need to store a pointer to a value in the Result field of the Message structure. I do so as follows:
msg.Result = Marshal.AllocHGlobal(4)
Marshal.WriteInt32(msg.Result, WVR_REDRAW)
I never call Marshal.FreeHGlobal since the Result is used outside the scope of WndProc .
Will this code cause a memory leak? If so, is there any way to do this without a memory leak?
Thanks
|
|
|
|
|
msg.Result = WVR_REDRAW;
will be just fine
|
|
|
|
|
That won't compile for me since Result is an IntPtr and WVR_REDRAW is just an Integer ...
|
|
|
|
|
Ok,
msg.Result = new IntPtr(WVR_REDRAW);
As far as I'm concerned you are a lower form of life than B*** S***** and M***** M******** combined. Colin Davies on some guy called R*** G****
|
|
|
|
|
That doesn't work either.. That creates a pointer to memory location WVR_REDRAW, the value at that location is not controlled by me.. I need to set Result to an IntPtr that points to a location containing the value WVR_REDRAW... The only way that I know of to do this is with the AllocHGlobal and WriteInt32 calls...
|
|
|
|
|
Kastro wrote:
That doesn't work either..
No my code was right IntPtr is a value type so you will not have any problems.
You don't need AllocHGlobal
As far as I'm concerned you are a lower form of life than B*** S***** and M***** M******** combined. Colin Davies on some guy called R*** G****
|
|
|
|