نمایش نتایج 1 تا 19 از 19

نام تاپیک: رزرو قسمتی از دسکتاپ برای فرم به گونه ای که برنامه های دیگه اجازه اسنفاده از اون قسمت رو نداشته باشن

  1. #1

    رزرو قسمتی از دسکتاپ برای فرم به گونه ای که برنامه های دیگه اجازه اسنفاده از اون قسمت رو نداشته باشن

    سلام
    اولا از موضوع تاپیکم به دلیل گنگ بودن عذر خواهی میکنم ؛
    راستیش خیلی وقته دنبال این خاصیت از فرم هستم اما چون نمیدونستم سوالم رو چجوری بپرسم، سوالم رو مطرح نکردم ،
    ممکنه یه ذره مطرح کردنش گُنگ باشه که بازم عذر میخوام

    شما taskbar ویندوز رو در نظر بگیرید ، وقتی هر فرم یا پنجره ای که باز میکنید ؛ میاد بالای اون taskbar قرار میگیره نه روی اون !
    چجوری میتونم همچین خاصیتی رو به فرمم بدم تا پنجره های دیگه روی اون قرار نگیرن بلکه بالا و پایین اون !؟
    ممنون میشم از راهنماییاتون

  2. #2
    کاربر دائمی آواتار mthreat.info
    تاریخ عضویت
    آبان 1390
    محل زندگی
    رشت
    پست
    415

    نقل قول: به دنبال یکی از خاصیت های ویژه فرم

    this.TopMost = true; 
    با این کد فرم شما همیشه روی بقیه قرار میگیره

  3. #3

    نقل قول: به دنبال یکی از خاصیت های ویژه فرم

    نقل قول نوشته شده توسط mthreat.info مشاهده تاپیک
    this.TopMost = true; 
    با این کد فرم شما همیشه روی بقیه قرار میگیره
    نه جناب مثل اینکه متوجه منظور من نشدید نمیخوام روی همه پنجره باشه !
    شما یه نیگاه به taskbar ویندوز بکنید، متوجه منظورم میشین !

  4. #4
    کاربر دائمی آواتار ebrahim.rayatparvar
    تاریخ عضویت
    آبان 1392
    محل زندگی
    https://www.youtube.com/c/zangclass
    پست
    714

    نقل قول: به دنبال یکی از خاصیت های ویژه فرم

    این سوال برای من هم گنگه میشه با یه عکس منظورت رو برسونی؟؟؟

  5. #5
    کاربر دائمی آواتار winner1
    تاریخ عضویت
    تیر 1392
    محل زندگی
    خلخال
    پست
    738

    نقل قول: به دنبال یکی از خاصیت های ویژه فرم

    ینی هر پنجره ای مربوز به هر برنامه ای یا فقط پنجره های مربوط به برنامه ی شما؟

  6. #6
    کاربر دائمی آواتار Javad_raouf
    تاریخ عضویت
    آذر 1388
    محل زندگی
    مشهد
    پست
    445

    نقل قول: به دنبال یکی از خاصیت های ویژه فرم

    فکر کنم منظورشون رو فهمیدم
    اگر درست متوجه شده باشم یک همچین چیزی می خوان:
    TaskBar.gif
    تو این تصویر نرم افزار JetAudio همین حالت رو پیدا کرده یعنی رفته بالای TaskBar قرار گرفته و مرورگر کروم با اینکه به حالت Maximize هست ولی نتونسته روی JetAudio رو بگیره
    درست حدس زدم؟؟؟؟؟

  7. #7
    کاربر دائمی آواتار Javad_raouf
    تاریخ عضویت
    آذر 1388
    محل زندگی
    مشهد
    پست
    445

    نقل قول: به دنبال یکی از خاصیت های ویژه فرم

    یافتم دوستان
    البته اگر سوال رو درست متوجه شده باشم
    این چیزی که شما می خوای اصطلاحا بهش میگن AppBar
    جواب اینه:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;


    using System.Runtime.InteropServices;


    namespace Test305
    {
    public partial class Form2 : Form
    {
    public Form2()
    {
    InitializeComponent();
    //this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
    //this.ClientSize = new System.Drawing.Size(960, 50);
    }
    const ABEdge DockMode = ABEdge.ABE_BOTTOM;
    #region APPBAR


    [StructLayout(LayoutKind.Sequential)]
    struct RECT
    {
    public int left;
    public int top;
    public int right;
    public int bottom;
    }


    [StructLayout(LayoutKind.Sequential)]
    struct APPBARDATA
    {
    public int cbSize;
    public IntPtr hWnd;
    public int uCallbackMessage;
    public int uEdge;
    public RECT rc;
    public IntPtr lParam;
    }


    enum ABMsg : int
    {
    ABM_NEW = 0,
    ABM_REMOVE = 1,
    ABM_QUERYPOS = 2,
    ABM_SETPOS = 3,
    ABM_GETSTATE = 4,
    ABM_GETTASKBARPOS = 5,
    ABM_ACTIVATE = 6,
    ABM_GETAUTOHIDEBAR = 7,
    ABM_SETAUTOHIDEBAR = 8,
    ABM_WINDOWPOSCHANGED = 9,
    ABM_SETSTATE = 10
    }


    enum ABNotify : int
    {
    ABN_STATECHANGE = 0,
    ABN_POSCHANGED,
    ABN_FULLSCREENAPP,
    ABN_WINDOWARRANGE
    }


    enum ABEdge : int
    {
    ABE_LEFT = 0,
    ABE_TOP,
    ABE_RIGHT,
    ABE_BOTTOM
    }


    private bool fBarRegistered = false;


    [DllImport("SHELL32", CallingConvention = CallingConvention.StdCall)]
    static extern uint SHAppBarMessage(int dwMessage, ref APPBARDATA pData);
    [DllImport("USER32")]
    static extern int GetSystemMetrics(int Index);
    [DllImport("User32.dll", ExactSpelling = true,
    CharSet = System.Runtime.InteropServices.CharSet.Auto)]
    private static extern bool MoveWindow
    (IntPtr hWnd, int x, int y, int cx, int cy, bool repaint);
    [DllImport("User32.dll", CharSet = CharSet.Auto)]
    private static extern int RegisterWindowMessage(string msg);
    private int uCallBack;


    private void RegisterBar()
    {
    APPBARDATA abd = new APPBARDATA();
    abd.cbSize = Marshal.SizeOf(abd);
    abd.hWnd = this.Handle;
    if (!fBarRegistered)
    {
    uCallBack = RegisterWindowMessage("AppBarMessage");
    abd.uCallbackMessage = uCallBack;


    uint ret = SHAppBarMessage((int)ABMsg.ABM_NEW, ref abd);
    fBarRegistered = true;


    ABSetPos();
    }
    else
    {
    SHAppBarMessage((int)ABMsg.ABM_REMOVE, ref abd);
    fBarRegistered = false;
    }
    }


    private void ABSetPos()
    {
    APPBARDATA abd = new APPBARDATA();
    abd.cbSize = Marshal.SizeOf(abd);
    abd.hWnd = this.Handle;
    abd.uEdge = (int)DockMode;


    if (abd.uEdge == (int)ABEdge.ABE_LEFT || abd.uEdge == (int)ABEdge.ABE_RIGHT)
    {
    abd.rc.top = 0;
    abd.rc.bottom = SystemInformation.PrimaryMonitorSize.Height;
    if (abd.uEdge == (int)ABEdge.ABE_LEFT)
    {
    abd.rc.left = 0;
    abd.rc.right = Size.Width;
    }
    else
    {
    abd.rc.right = SystemInformation.PrimaryMonitorSize.Width;
    abd.rc.left = abd.rc.right - Size.Width;
    }


    }
    else
    {
    abd.rc.left = 0;
    abd.rc.right = SystemInformation.PrimaryMonitorSize.Width;
    if (abd.uEdge == (int)ABEdge.ABE_TOP)
    {
    abd.rc.top = 0;
    abd.rc.bottom = Size.Height;
    }
    else
    {
    abd.rc.bottom = SystemInformation.PrimaryMonitorSize.Height;
    abd.rc.top = abd.rc.bottom - Size.Height;
    }
    }


    // Query the system for an approved size and position.
    SHAppBarMessage((int)ABMsg.ABM_QUERYPOS, ref abd);


    // Adjust the rectangle, depending on the edge to which the
    // appbar is anchored.
    switch (abd.uEdge)
    {
    case (int)ABEdge.ABE_LEFT:
    abd.rc.right = abd.rc.left + Size.Width;
    break;
    case (int)ABEdge.ABE_RIGHT:
    abd.rc.left = abd.rc.right - Size.Width;
    break;
    case (int)ABEdge.ABE_TOP:
    abd.rc.bottom = abd.rc.top + Size.Height;
    break;
    case (int)ABEdge.ABE_BOTTOM:
    abd.rc.top = abd.rc.bottom - Size.Height;
    break;
    }


    // Pass the final bounding rectangle to the system.
    SHAppBarMessage((int)ABMsg.ABM_SETPOS, ref abd);


    // Move and size the appbar so that it conforms to the
    // bounding rectangle passed to the system.
    MoveWindow(abd.hWnd, abd.rc.left, abd.rc.top,
    abd.rc.right - abd.rc.left, abd.rc.bottom - abd.rc.top, true);
    }


    protected override void WndProc(ref System.Windows.Forms.Message m)
    {
    if (m.Msg == uCallBack)
    {
    switch (m.WParam.ToInt32())
    {
    case (int)ABNotify.ABN_POSCHANGED:
    ABSetPos();
    break;
    }
    }


    base.WndProc(ref m);
    }


    protected override System.Windows.Forms.CreateParams CreateParams
    {
    get
    {
    CreateParams cp = base.CreateParams;
    cp.Style &= (~0x00C00000); // WS_CAPTION
    cp.Style &= (~0x00800000); // WS_BORDER
    cp.ExStyle = 0x00000080 | 0x00000008; // WS_EX_TOOLWINDOW | WS_EX_TOPMOST
    return cp;
    }
    }


    #endregion


    private void Form2_FormClosing(object sender, FormClosingEventArgs e)
    {
    RegisterBar();
    }


    private void Form2_Load(object sender, EventArgs e)
    {
    RegisterBar();
    }


    }
    }



    فقط دو خط:
                //this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
    //this.ClientSize = new System.Drawing.Size(960, 50);

    رو کامنت کردم تا اندازه و استایل فرم رو دستی تنظیم کنید

  8. #8
    کاربر دائمی آواتار asman.abi
    تاریخ عضویت
    اسفند 1391
    محل زندگی
    ایران
    پست
    187

    نقل قول: به دنبال یکی از خاصیت های ویژه فرم

    از کجا کپی کردی این همه کد!
    ساده تر نمی تونستی انجام بدی.

  9. #9

    نقل قول: به دنبال یکی از خاصیت های ویژه فرم

    شاید هم منظورشون این باشه که وقتی برنامه خودشون را اجرا میکنند روی تکسبار را می پوشونه.

  10. #10
    کاربر دائمی آواتار Javad_raouf
    تاریخ عضویت
    آذر 1388
    محل زندگی
    مشهد
    پست
    445

    نقل قول: به دنبال یکی از خاصیت های ویژه فرم

    از کجا کپی کردی این همه کد!

    ساده تر نمی تونستی انجام بدی.
    از توی یک سایت کپی کردم توی برنامه خودم تست کردم جواب گرفتم
    تازه تیکه های اضافیشو حذف کردم یه کوچولو هم کد بهش اضافه کردم
    گذاشتم اینجا
    ساده تر از این نمیشه چون اینا هر کدومش یک قضیه ای داره
    علاوه بر تنظیمات فرم و برنامه باید به ویندوز هم فرمان بدی که بفهمه اون تیکه پایین یا بالا یا چپ یا راست رزرو شده و برنامه دیگری حق داره اینجا رو بگیر
    تابع RegisterBar کارش دقیقا همینه و با استفاده از API های Import شده این کار رو انجام میده
    تابع ABSetPos مکان و سایز فرم AppBar رو مشخص می کنه
    بقیه هم که تعاریف Enum و ... هست
    پس همش لازمه

    راستی دوستان این تیکه کد رو هم خودم اضافه کردم:
    constABEdge DockMode = ABEdge.ABE_BOTTOM;

    چیز مهمی نیست فقط می تونین با این مشخص کنید Appbar بالا، پایین، چپ یا راست باشه

    اینم لینک جایی که کد رو ازش کپی کردم:
    http://www.codeproject.com/Articles/6741/AppBar-using-C
    توضیحات کاملی هم نوشته

  11. #11
    کاربر دائمی آواتار Javad_raouf
    تاریخ عضویت
    آذر 1388
    محل زندگی
    مشهد
    پست
    445

    نقل قول: به دنبال یکی از خاصیت های ویژه فرم

    شاید هم منظورشون این باشه که وقتی برنامه خودشون را اجرا میکنند روی تکسبار را می پوشونه.
    اینجوری ثابت می کنم که من درست می گم:
    شما taskbar ویندوز رو در نظر بگیرید ، وقتی هر فرم یا پنجره ای که باز میکنید ؛ میاد بالای اون taskbar قرار میگیره نه روی اون !
    این جمله یکم نیاز به تفسیر داره
    در این جمله کلمه "بالای" با کلمه "روی " دو تا معنی متفاوت دارد
    "بالای" به محور Y ها و "روی" به محور Z ها اشاره دارد

  12. #12

    نقل قول: به دنبال یکی از خاصیت های ویژه فرم

    دوست عزیز فک کنم منظورتون اینجوری باشه.
    حتی taskbar هم میره زیر این فرم!
    فایل های ضمیمه فایل های ضمیمه

  13. #13

    نقل قول: به دنبال یکی از خاصیت های ویژه فرم

    نقل قول نوشته شده توسط Javad_raouf مشاهده تاپیک
    فکر کنم منظورشون رو فهمیدم
    اگر درست متوجه شده باشم یک همچین چیزی می خوان:
    TaskBar.gif
    تو این تصویر نرم افزار JetAudio همین حالت رو پیدا کرده یعنی رفته بالای TaskBar قرار گرفته و مرورگر کروم با اینکه به حالت Maximize هست ولی نتونسته روی JetAudio رو بگیره
    درست حدس زدم؟؟؟؟؟
    درسته جناب رئوف منظورم همین بود ! خیلی ممنون از راهنمایی شما و تمامی دوستان

  14. #14

    نقل قول: به دنبال یکی از خاصیت های ویژه فرم

    شرمنده این کد الان فرم رو میبره پایین قرار میده اگه بخوام ببره بالای سکرین کجاش رو باید تغییر بدم ؟!

  15. #15

    نقل قول: به دنبال یکی از خاصیت های ویژه فرم

    نقل قول نوشته شده توسط imanx7 مشاهده تاپیک
    شرمنده این کد الان فرم رو میبره پایین قرار میده اگه بخوام ببره بالای سکرین کجاش رو باید تغییر بدم ؟!
    فکر میکنم الان دیگه همونی هس که میخاین.
    عکس های ضمیمه عکس های ضمیمه
    • نوع فایل: jpg 1.jpg‏ (67.0 کیلوبایت, 54 دیدار)
    فایل های ضمیمه فایل های ضمیمه

  16. #16
    کاربر دائمی آواتار Javad_raouf
    تاریخ عضویت
    آذر 1388
    محل زندگی
    مشهد
    پست
    445

    نقل قول: به دنبال یکی از خاصیت های ویژه فرم

    شرمنده این کد الان فرم رو میبره پایین قرار میده اگه بخوام ببره بالای سکرین کجاش رو باید تغییر بدم ؟!
    دشمنت شرمنده بالاتر عرض کردم:
    متغیر DockMode رو باید عوض کنید
    به جای:
    const ABEdge DockMode = ABEdge.ABE_BOTTOM;

    باید بنویسید:
    const ABEdge DockMode = ABEdge.ABE_TOP;

    اینجوری میره بالای مانیتورت
    اینجوری هم می تونی بنویسی:
    const ABEdge DockMode = ABEdge.ABE_LEFT;

    تا بره سمت چپ صفحه دسکتاپ رو بگیره
    یا:
    const ABEdge DockMode = ABEdge.ABE_RIGHT;

    برای سمت راست

  17. #17

    نقل قول: به دنبال یکی از خاصیت های ویژه فرم

    نقل قول نوشته شده توسط Javad_raouf مشاهده تاپیک
    دشمنت شرمنده بالاتر عرض کردم:
    متغیر DockMode رو باید عوض کنید
    به جای:
    const ABEdge DockMode = ABEdge.ABE_BOTTOM;

    باید بنویسید:
    const ABEdge DockMode = ABEdge.ABE_TOP;

    اینجوری میره بالای مانیتورت
    اینجوری هم می تونی بنویسی:
    const ABEdge DockMode = ABEdge.ABE_LEFT;

    تا بره سمت چپ صفحه دسکتاپ رو بگیره
    یا:
    const ABEdge DockMode = ABEdge.ABE_RIGHT;

    برای سمت راست
    ممنون از شما جناب رئوف؛ ولی مشکلش اینه که دقیقا به بالای صفحه Anchor نمیشه !!!
    j.jpg

  18. #18

    نقل قول: به دنبال یکی از خاصیت های ویژه فرم

    خیلی ممنون از همه بخصوص آقای رئوغ ؛ خودم مشکلش رو حل کردم ! بازم ممنون

  19. #19

    نقل قول: به دنبال یکی از خاصیت های ویژه فرم

    نقل قول نوشته شده توسط imanx7 مشاهده تاپیک
    خیلی ممنون از همه بخصوص آقای رئوغ ؛ خودم مشکلش رو حل کردم ! بازم ممنون
    با سلام میشه بگی چطور مشکل را حل کردی؟ من دقیقا همین مشکل را دارم.

تاپیک های مشابه

  1. پاسخ: 1
    آخرین پست: دوشنبه 16 تیر 1393, 07:04 صبح
  2. جمع آوری آنتروپی از کاربران برای تولید اعداد رندوم امن در برنامه های وب (PHP)
    نوشته شده توسط eshpilen در بخش امنیت در نرم افزار و برنامه نویسی
    پاسخ: 1
    آخرین پست: چهارشنبه 23 فروردین 1391, 13:00 عصر
  3. ایجاد حالت فانتزی برای فرم
    نوشته شده توسط mehdi3683 در بخش VB.NET
    پاسخ: 4
    آخرین پست: دوشنبه 30 آبان 1384, 17:37 عصر
  4. یک رنگ بندی و پس زمینه جالب برای فرم شما
    نوشته شده توسط FirstLine در بخش برنامه نویسی در Delphi
    پاسخ: 0
    آخرین پست: یک شنبه 06 دی 1383, 16:04 عصر
  5. اسکین های زیبا برای فرم ها؟
    نوشته شده توسط SSP_Software_team در بخش C#‎‎
    پاسخ: 6
    آخرین پست: پنج شنبه 29 آبان 1382, 02:15 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •