TECHNOLOGIES
FORUMS
JOBS
BOOKS
EVENTS
INTERVIEWS
Live
MORE
LEARN
Training
CAREER
MEMBERS
VIDEOS
NEWS
BLOGS
Sign Up
Login
No unread comment.
View All Comments
No unread message.
View All Messages
No unread notification.
View All Notifications
Answers
Post
An Article
A Blog
A News
A Video
An EBook
An Interview Question
Ask Question
Forums
Monthly Leaders
Forum guidelines
Administrator
Tech Writer
2.2k
1.5m
about api called in c#
Mar 3 2003 12:46 AM
Hi expert: i come from China,I would very appreciate for your help! I am trying to learn of c# and windows api,so i implement api functions in c#. now,in my first step,i want to create a window by CreateWindow,which must deal with struct WNDCLASS and function RegisterClass;the error occurs at which i call function RegisterClass, is about parameter can not match to the function. the following is my code: //const define area public const long CS_VREDRAW = 0x1; public const long CS_HREDRAW = 0x2; public const long IDC_ARROW = 32512; private const String myWindowClassName="Hello"; //WNDCLASS struct define public struct WNDCLASS { public Int32 style; public long lpfnwndproc; public long cbClsextra; public long cbWndExtra2; public IntPtr hInstance; public IntPtr hIcon; public IntPtr hCursor; public IntPtr hbrBackground; public String lpszMenuName; public String lpszClassName; } //api function RegisterClass [DllImport("user32.dll",EntryPoint="RegisterClassA",CharSet=CharSet.Unicode)] public static extern long RegisterClass(WNDCLASS Class); [DllImport("user32.dll",EntryPoint="DefWindowProcA",CharSet=CharSet.Unicode)] public static extern long DefWindowProc(IntPtr hWnd,long wMsg, long wParam, long lParam); //main function private bool MyRegisterClass() { WNDCLASS wndcls; try { wndcls.style=(Int32)CS_HREDRAW+(Int32)CS_VREDRAW; Type t=this.GetType(); MethodInfo m=t.GetMethod("MyWndProc"); wndcls.lpfnwndproc=(long)m.MethodHandle.Value; wndcls.cbClsextra=0; wndcls.cbWndExtra2=0; wndcls.hInstance=(IntPtr)Marshal.GetHINSTANCE(System.Reflection. Assembly.GetExecutingAssembly().GetModules()[0]).ToInt32(); wndcls.hIcon=(IntPtr)0; wndcls.hCursor=LoadCursor((IntPtr)0,IDC_ARROW); wndcls.hbrBackground=(IntPtr)COLOR_WINDOW; wndcls.lpszMenuName=null; wndcls.lpszClassName=myWindowClassName; return(RegisterClass(wndcls)!=0); //error occur here } catch(Exception e) { return false; } } //windows message process procedure public long MyWndProc(IntPtr hWnd,long message,long wParam,long lParam) { return DefWindowProc(hWnd,message,wParam,lParam); } and thank you for your help!
Reply
Answers (
2
)
How to draw on the media player? PLS HELP!!
pass a string array to the next form.