|
Another good resource are Reflector-like tools. If you don't understand what a special class does than you can just look into the code.
|
|
|
|
|
Hi,
When the print button is clicked, I save a snapshot of the screen to a bitmap file.
Graphics currentTab = this.CreateGraphics(); <br />
Size s = this.Size;<br />
Bitmap memoryImage = new Bitmap(s.Width - 10, s.Height - 36, currentTab);<br />
Graphics memoryGraphics = Graphics.FromImage(memoryImage);<br />
IntPtr dc1 = currentTab.GetHdc();<br />
IntPtr dc2 = memoryGraphics.GetHdc();<br />
BitBlt(dc2, 0, 0, this.ClientRectangle.Width, this.ClientRectangle.Height, dc1, 2, 2, 13369376);<br />
CurrentPage = memoryImage;<br />
currentTab.ReleaseHdc(dc1);<br />
memoryGraphics.ReleaseHdc(dc2);<br />
CurrentPage.Save("sCurrentPage.bmp",System.Drawing.Imaging.ImageFormat.Bmp);
Then I start to do the printing.
PrintDocument ppd = new PrintDocument(); <br />
PageSetupDialog pg = new PageSetupDialog();<br />
printDialog1.Document = ppd;<br />
pg.Document = ppd;<br />
pg.PageSettings.Landscape = true;<br />
DialogResult result = printDialog1.ShowDialog();<br />
if (result==DialogResult.OK)<br />
{<br />
ppd.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(PrintCurrentPage);<br />
ppd.Print(); <br />
}<br />
ppd.Dispose();
The first time I print, everything works ok. But if I hit the button again, I get an error, and the current screen doesn't save. (An unhandled exception of type 'System.Runtime.InteropServices.ExternalException' occurred in system.drawing.dll Additional information: A generic error occurred in GDI+.)
If I comment out the printing part, the current page saves just fine. I also commented out just the line ppd.Print(); . The image saved fine and I didn't get any error messages. Any thoughts?
Cheers,
Mel
|
|
|
|
|
Where is the function: 'BitBlt'? Is it a Win32 function or is it somewhere in the .Net Framework, or did you write it?
I get "system.drawing.dll Additional information: A generic error occurred in GDI+" in any application when I try to save a Bitmap to the same file more than once. Try changing the name of this file after every save.
Ex:
First time name would be "sCurrentPage0.bmp"
then "sCurrentPage1.bmp"
"sCurrentPage2.bmp"...
|
|
|
|
|
I've made an app that has a main screen. When the form loads, it looks for dlls in a subfolder, finds them gets their display names from a class function in them, adds them to the menu and displays the form in the dll for the menu item.
However, there are common functions that will need to be ran by the other forms in the separate dlls. I don't want to create a separate dll, I want them to use the code from the main form.
Should I send in a reference to the main form, and if so, how can I get the dll form to call the function in the main form? Or should I be trying to use a delegate?
As you can tell, I'm pretty new to C#. I know how to do this in C++, but I'm kinda confused in C#. So any help is appreciated. Don't mind dumbing it down for me.
My articles
BlackDice
|
|
|
|
|
nevermind. I got it. I just sent a reference to the form in and called InvokeMember().
My articles
BlackDice
|
|
|
|
|
Hi,
I am running sql server Dev. and visual web developer 2005. It seems that I can not create a local database using VWD 2005. Is this because I have to have sql server Express edition in order to be able to create a local database using the VWD 2005?
Thanks
|
|
|
|
|
In fact, you can use your current SQL server to create a local database.
|
|
|
|
|
Hi,
We have a win32 dll for communicating with the MSR device.
I have a c# class for calling the dll functions as follows.
<br />
public class MSRsTest<br />
{<br />
private int usbMode = 0;<br />
<br />
[MarshalAs(UnmanagedType.LPStr)]<br />
private StringBuilder szSerNumber = new StringBuilder(100,200);<br />
[MarshalAs(UnmanagedType.LPStr)]<br />
private StringBuilder szTrack1 = new StringBuilder(100,200);<br />
[MarshalAs(UnmanagedType.LPStr)]<br />
private StringBuilder szTrack2 = new StringBuilder(100,200);<br />
[MarshalAs(UnmanagedType.LPStr)]<br />
private StringBuilder szTrack3 = new StringBuilder(100,200);<br />
<br />
[DllImport( "ReadUSB_MSR_DLL.dll", CharSet = CharSet.Unicode )]<br />
public static extern int fnOpen_USB_MSR(int usbMode);<br />
<br />
[DllImport( "ReadUSB_MSR_DLL.dll", CharSet = CharSet.Unicode )]<br />
public static extern int fnReadUSB_MSR_Data(int usbMode,<br />
[MarshalAs(UnmanagedType.LPStr)] StringBuilder szTrack1,<br />
[MarshalAs(UnmanagedType.LPStr)] StringBuilder szTrack2,<br />
[MarshalAs(UnmanagedType.LPStr)] StringBuilder szTrack3);<br />
<br />
[DllImport( "ReadUSB_MSR_DLL.dll", CharSet = CharSet.Unicode )]<br />
public static extern int fnClose_USB_MSR();<br />
<br />
<br />
public MSRsTest(){}<br />
<br />
public void Do_HIDMSR_Test(System.Windows.Forms.TextBox Track1,<br />
System.Windows.Forms.TextBox Track2,<br />
System.Windows.Forms.TextBox Track3<br />
)<br />
{<br />
int iretn;<br />
usbMode = 1;<br />
try <br />
{<br />
iretn = fnOpen_USB_MSR(usbMode); <br />
<br />
<br />
iretn = 0;<br />
while(iretn == 0)<br />
{ <br />
iretn = fnReadUSB_MSR_Data(usbMode,szTrack1,szTrack2,szTrack3);<br />
}<br />
<br />
if(szTrack1.ToString().Length >= 22 && szTrack2.ToString().Length >= 22 &&<br />
szTrack3.ToString().Length >= 22)<br />
{<br />
Track1.Text = szTrack1.ToString(0,22);<br />
Track2.Text = szTrack2.ToString(0,22);<br />
Track3.Text = szTrack3.ToString(0,22);<br />
}<br />
else<br />
{<br />
Track1.Text = szTrack1.ToString();<br />
Track2.Text = szTrack2.ToString();<br />
Track3.Text = szTrack3.ToString();<br />
}<br />
<br />
szTrack1.Remove(0,szTrack1.Length);<br />
szTrack2.Remove(0,szTrack2.Length);<br />
szTrack3.Remove(0,szTrack3.Length);<br />
<br />
iretn = 0;<br />
iretn = fnClose_USB_MSR();<br />
<br />
}<br />
catch(Exception){}<br />
}<br />
I call this class from my MSRform
as
MSRsTest TestMSR = new MSRsTest(); <br />
else if(MSR_type == "USBHIDMSR")<br />
{<br />
this.Statuslabel.Text = "USB HID MSR: Swipe Card";<br />
this.Statuslabel.Refresh();<br />
TestMSR.Do_HIDMSR_Test(this.Track1TB,this.Track2TB,this.Track3TB);<br />
}
every thing works fine. The MSR returns backs the correct value for the first time. But after navigating to some other forms, if I come to the MSRform again and do the procedure the values read from the card ie. the dll gets junk values form the card.
But in the first time itself if I do a for loop inside else if(MSR_type == "USBHIDMSR") then the MSR reads correct values no matter how many times I do inside the loop.
What's the problem...I am missing to do something but could'nt figure out...pls help.
Thanks.
|
|
|
|
|
When configuring a sqldatasource through the wizard I see that in
advanced sql generation options the two checkboxes are greyed out in visual web developer 2005.
How is it possible to enable these please?
Thanks
|
|
|
|
|
I've never used the web developer version. But, by chance is your backend an Access database? It would make sense that those options are greyed out because Access only supports single statement queries.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
+ In the table/view dropdownlist, you should select a table, not a view.
+ Then select columns, make sure the primary column is selected.
+ Click Advanced, the first option is available.
+ Select the first option, the second option is available.
|
|
|
|
|
Hi,
I want to delete a C# class object and all the resources used by the class before the garbage collector does it.
How do I do it in C#.
Thanks.
|
|
|
|
|
If the object represents a truly limited resource, it should implement IDisposable and then one would call <code>object.Dispose() when they are done with it. If it isn't a limited resource that needs active maintaince then let the system handle it by normal garbage collection.
|
|
|
|
|
You don't.
If the class inherits IDisposable, e.g. has a Dispose method, you call that method to clean up any unmanaged resources. Then you get rid of the reference to the object, and it will be garbage collected eventually.
You can invoke a garbage collection manually, but there is very rarely any reason to do so. If the system or the .NET heap needs more memory, a garbage collection will occur to try to free up memory.
---
b { font-weight: normal; }
|
|
|
|
|
I have a lot of C++ resource files that I need to include but I have to do so in C#. Any thoughts?
Ericson
|
|
|
|
|
Hi
I am making a project of chess game for which i have to import gif images of chess pieces .can anyone tell me how to put images in windows forms. do keep in mind that i am making the chess board using GDI+. and do tell me how to move/redraw that image. help in this regard would be appreciated.
|
|
|
|
|
Salam,
Dear u have to deal with 2 methods of GDI+.
1. Graphics.DrawImage();
2. Graphics.FillRectangle();
When u move one piece from one black box to other simply draw the moved piece on the new box using Graphics.DrawImage(); and fill the older box with the black filled rectangle using Graphics.FillRectangle() Method. and so on.
First of all u have to divige the whole Form or panel into the boxes then the above mentioned proceedure will be applicable. If u want further info. Please write more. And also Consult MSDN for these methods.
Cheers,
Rizwan
|
|
|
|
|
What dotnetdev83 told will work. Another clever way of doing this create dynamic buttons on your form, assign a GIF image to its Image property, and then write code to drag it around.
Though totally unrelated to chess, this[^] article's code shows you how to do it. Plus point of this method as they are "button"s you can handle the click event and other events easily.
Koushik Biswas
|
|
|
|
|
I posted this once before, but it is about 20 pages back now. I am using EM_SETCHARFORMAT to try and set the background color of charachters in a RichTextBox, but it wont work. I have tried everything I can think of, and nothing. When I try and set the forecolor, that works, and I can paste in charachters with a set backcolor and it works fine, the code just isnt working how I want it to...
I tried dwEffects=0, dwEffects=CFE_PROTECTED, not setting dwEffects, etc. Nothing has worked. The call to DefWndProc is returning a non zero value, so it is working, just not how I want it to. There has to be something I am missing somewhere... I am going to list all my constants, structure, etc, and perhaps someone can figure out what is going on. FYI, I have also tried the API call and it does the same thing.
[StructLayout(LayoutKind.Sequential)]
private struct CHARFORMAT2
{
public int cbSize;
public int dwMask;
public int dwEffects;
public int yHeight;
public int yOffset;
public int crTextColor;
public byte bCharSet;
public byte bPitchAndFamily;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=32)]
public string szFaceName;
public int wWeight;
public int sSpacing;
public int crBackColor;
public int lcid;
public int dwReserved;
public int sStyle;
public int wKerning;
public byte bUnderlineType;
public byte bAnimation;
public byte bRevAuthor;
public byte bReserved1;
}//struct charformat2
//constants
EM_SETCHARFORMAT=0x444;
CFM_BACKCOLOR=0x4000000;
CFM_COLOR=0x40000000;
SCF_SELECTION=0x1;
//Call to format, tried CFM_BACKCOLOR and CFM_BACKCOLOR|CFM_COLOR, etc,
// only forecolor changes
CHARFORMAT2 cf2=new CHARFORMAT2();
cf2.dwMask=CFM_BACKCOLOR;
cf2.cbSize=Marshal.SizeOf(cf2);
cf2.crBackColor=ColorTranslator.ToWin32(Color.Red);
IntPtr lParam=Marshal.AllocCoTaskMem(Marshal.SizeOf(cf2));
Marshal.StructureToPtr(cf2, lParam, false);
Message msg=Message.Create(this.Handle, EM_SETCHARFORMAT, (IntPtr)SCF_SELECTION, lParam);
DefWndProc(ref msg);
Marshal.FreeCoTaskMem(lParam);
|
|
|
|
|
Hi again!
Now I've tried your code and found that your struct definition is not correct.
For example, wWeight and sSpacing are not int (32 bit), but UInt16 (16 bit). Same with sStyle and wKerning.
Because your struct declaration is wrong, the bytes are shifted and thus do not work.
Regards,
mav
|
|
|
|
|
Thanks. All I had to go by was the struct definition on MSDN's website, and it was for c++. I wasnt sure exactly what the exact conversions were for each of the elements, but I knew it had to be something like that. It definately makes sense though. I appreciate your help! Thanks!
|
|
|
|
|
I am experiencing a problem with integrating a help function (created with HTML Help Workshop) inside my splitcontainer.
Does anyone know if this is possible?
I have researched the issue and only found possibilities to display popup help or help in a separate window.
Freya
|
|
|
|
|
Hi everybody!
Can anybody tell me if it is possible to build an executable, form a C# code made in Visual Studio .net 2003, that not requires framework installed?
Thank you so much
|
|
|
|
|
Not in a very practically way. There are tools which compile c#-code in win32-exe files but they are very expensive.
With the build in tools from vs.net it is not possible.
'A programmer is just a tool which converts caffeine into code'
|
|
|
|
|
Actually, if you use XenoCode and ask it to embed the .NET framework, it will embed it in to your applciation codebase (binaries), so you don;t have to ask your customers to have .NET Framwork installed.
|
|
|
|
|