PDA

View Full Version : سوال: هایپرلینک در مسیج باکس



ahrimaneahurai
جمعه 03 اردیبهشت 1389, 12:22 عصر
سلام دوستان
من می خوام توی برنامم یک مسیج باکس نشون بدم و توی اون یک آدرس اینترنتی بصورت هایپرلینک نشون داده شه که وقتی روش کلیک می کنه اون آدرس باز شه
ممنون میشم کمک کنید

s.khoshfekran
جمعه 03 اردیبهشت 1389, 12:25 عصر
خب دوست عزیز خودت یه فرم مثه MassegeBox درست کن که نیازاتو برطرف کنه!

ahrimaneahurai
جمعه 03 اردیبهشت 1389, 13:17 عصر
دوست عزیز این راه حل شما درسته و به ذهن خودم رسید اما می خوام از خود مسیج باکس دات نت استفاده کنم

FastCode
جمعه 03 اردیبهشت 1389, 13:47 عصر
دوست عزیز این راه حل شما درسته و به ذهن خودم رسید اما می خوام از خود مسیج باکس دات نت استفاده کنم
این هم سورش کد net framework.:
به نظرتون ممکنه؟

private static DialogResult ShowCore(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options, bool showHelp)
{
DialogResult result;
if (!ClientUtils.IsEnumValid(buttons, (int) buttons, 0, 5))
{
throw new InvalidEnumArgumentException("buttons", (int) buttons, typeof(MessageBoxButtons));
}
if (!WindowsFormsUtils.EnumValidator.IsEnumWithinShif tedRange(icon, 4, 0, 4))
{
throw new InvalidEnumArgumentException("icon", (int) icon, typeof(MessageBoxIcon));
}
if (!WindowsFormsUtils.EnumValidator.IsEnumWithinShif tedRange(defaultButton, 8, 0, 2))
{
throw new InvalidEnumArgumentException("defaultButton", (int) defaultButton, typeof(DialogResult));
}
if (!SystemInformation.UserInteractive && ((options & (MessageBoxOptions.ServiceNotification | MessageBoxOptions.DefaultDesktopOnly)) == 0))
{
throw new InvalidOperationException(SR.GetString("CantShowModalOnNonInteractive"));
}
if ((owner != null) && ((options & (MessageBoxOptions.ServiceNotification | MessageBoxOptions.DefaultDesktopOnly)) != 0))
{
throw new ArgumentException(SR.GetString("CantShowMBServiceWithOwner"), "options");
}
if (showHelp && ((options & (MessageBoxOptions.ServiceNotification | MessageBoxOptions.DefaultDesktopOnly)) != 0))
{
throw new ArgumentException(SR.GetString("CantShowMBServiceWithHelp"), "options");
}
if ((options & ~(MessageBoxOptions.RtlReading | MessageBoxOptions.RightAlign)) != 0)
{
IntSecurity.UnmanagedCode.Demand();
}
IntSecurity.SafeSubWindows.Demand();
int type = showHelp ? 0x4000 : 0;
type |= ((buttons | ((MessageBoxButtons) ((int) icon))) | ((MessageBoxButtons) ((int) defaultButton))) | ((MessageBoxButtons) ((int) options));
IntPtr zero = IntPtr.Zero;
if (showHelp || ((options & (MessageBoxOptions.ServiceNotification | MessageBoxOptions.DefaultDesktopOnly)) == 0))
{
if (owner == null)
{
zero = UnsafeNativeMethods.GetActiveWindow();
}
else
{
zero = Control.GetSafeHandle(owner);
}
}
IntPtr userCookie = IntPtr.Zero;
if (Application.UseVisualStyles)
{
userCookie = UnsafeNativeMethods.ThemingScope.Activate();
}
Application.BeginModalMessageLoop();
try
{
result = Win32ToDialogResult(SafeNativeMethods.MessageBox(n ew HandleRef(owner, zero), text, caption, type));
}
finally
{
Application.EndModalMessageLoop();
UnsafeNativeMethods.ThemingScope.Deactivate(userCo okie);
}
UnsafeNativeMethods.SendMessage(new HandleRef(owner, zero), 7, 0, 0);
return result;
}




[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern int MessageBox(HandleRef hWnd, string text, string caption, int type);



[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
public static extern IntPtr GetActiveWindow();



internal static IntPtr GetSafeHandle(IWin32Window window)
{
IntPtr zero = IntPtr.Zero;
Control control = window as Control;
if (control != null)
{
return control.Handle;
}
IntSecurity.AllWindows.Demand();
zero = window.Handle;
if (!(zero == IntPtr.Zero) && !UnsafeNativeMethods.IsWindow(new HandleRef(null, zero)))
{
throw new Win32Exception(6);
}
return zero;
}




[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
public static extern bool IsWindow(HandleRef hWnd);

marijooon
جمعه 03 اردیبهشت 1389, 13:52 عصر
این کدو چه جوری باید استفاده کرد؟
DllImport این چیه؟ یعنی چی؟
یه کم واضح تر توضیح میدید؟(لطفا)

MohamamdMoein
جمعه 03 اردیبهشت 1389, 14:22 عصر
we can not do this work in messagebox because it is very limited in this which i attached you see a project
which write a custome controls
enjoy it

FastCode
جمعه 03 اردیبهشت 1389, 14:48 عصر
این کدو چه جوری باید استفاده کرد؟
DllImport این چیه؟ یعنی چی؟
یه کم واضح تر توضیح میدید؟(لطفا)

این بخشی از سورس کد .net framework هست.
راجع به dllimport هم مطلب زیاد هست.
http://www.google.com/cse?cx=010277259273172057471:gbud9yj2nhi&q=dllimport&x=0&y=0&siteurl=barnamenevis.org/forum/showthread.php%3Fp%3D959992%26posted%3D1%23post959 992

FastCode
جمعه 03 اردیبهشت 1389, 14:53 عصر
http://barnamenevis.org/forum/archive/index.php/t-98580.html
این هم جالبه.(فقط متن button ها رو تغییر میده.)

ahrimaneahurai
یک شنبه 05 اردیبهشت 1389, 15:36 عصر
سلام
دوست عزیز ممنون اما منظورم این بود که وقتی مسیج باکس نشون داده میشه آدرس وب با رنگ آبی نوشته شده باشه و وقتی روی اون آدرس کلیک میشه مرورگر کاربر باز شه بره تو اون آدرس

FastCode
یک شنبه 05 اردیبهشت 1389, 16:41 عصر
سلام
دوست عزیز ممنون اما منظورم این بود که وقتی مسیج باکس نشون داده میشه آدرس وب با رنگ آبی نوشته شده باشه و وقتی روی اون آدرس کلیک میشه مرورگر کاربر باز شه بره تو اون آدرس
یعنی شما هیچی از اون همه کد نفهمیدی؟:متفکر: