Setting the initial position of a dialog-based application

void CAppDlg::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos) { if (lpwndpos->cx = -1) if (lpwndpos->cy = -1) // is init time { lpwndpos->x = 0; // change here if you want to move left or right the window. lpwndpos->y = 0; // change here if you want to move top or bottom the window. } CDialog::OnWindowPosChanging(lpwndpos); }

Explanation

After CreateDialogIndirect, the MFC call CenterWindow. The last line of this function call SetWindowPos with position of window, and with -1, -1, as width and height of window. So the WM_WINDOWPOSCHANGING is obviously.

Date Last Updated: April 19, 1999



Comments

  • Fixed Position Dialog?

    Posted by Legacy on 09/25/2003 12:00am

    Originally posted by: Jon Ha

    Hey Xiaolong Li (or anybody who can answer),
    
    

    What is the actual code that can be used to fix the position of a dialog box? I do not want the dialog to be movable, even when the mouse drags the top title bar of the dialog. is this possible??

    thanks very much!

    Jon

    Reply
  • Works Great

    Posted by Legacy on 04/09/2003 12:00am

    Originally posted by: Trent

    I added the code to my program and it works well.

    Thanks a lot

    Reply
  • Modeless

    Posted by Legacy on 12/25/2002 12:00am

    Originally posted by: Dep

    In the modeless option this solution doesn't work...

    Reply
  • Hiding a modal dialog on startup

    Posted by Legacy on 04/30/2002 12:00am

    Originally posted by: Bosyotik

    You can hide a modal dialog on startup like this:
    
    

    1) Add a BOOL member variable on your CDialog class and intialize it to TRUE

    class CYourDialod: public CDialog
    {
    // ...
    private:
    BOOL m_bHideOnStart;
    }

    CYourDialog::CYourDialog(CWnd* pParent /*=NULL*/)
    : CDialog(CUpgraderDlg::IDD, pParent), m_bHideOnStart(TRUE);
    {
    //...
    }

    2) Handle WM_WINDOWPOSCHANGING message

    void CYourDialog::OnWindowPosChanging(WINDOWPOS* lpwndpos)
    {
    CDialog::OnWindowPosChanging(lpwndpos);
    if((lpwndpos->flags & SWP_SHOWWINDOW) && m_bHideOnStart){
    lpwndpos->flags &= ~SWP_SHOWWINDOW;
    m_bHideOnStart=FALSE;
    }
    }

    Reply
  • Setting position

    Posted by Legacy on 10/17/2000 12:00am

    Originally posted by: Wayne Irons

    Setting the initial position of the dialog is working fine, but how can I also set the initial size? It seems that even if I set lpwndpos->cx and ->cy, they're ignored because SetWindowPos was called with SWP_NOSIZE as a flag...

    Reply
  • How to begin Application with a maximised window size?

    Posted by Legacy on 05/17/2000 12:00am

    Originally posted by: Manish

    If u have developed a dialog based or any SDI/MDI application ,
    
    what should be done in order to open it in maximised window size..??
    my addy ,Logmanish@yahoo.com

    Reply
  • Use DialogBox's properties if the position is fixed

    Posted by Legacy on 04/20/1999 12:00am

    Originally posted by: Xiaolong Li

    Easier way:

    1. Select your DialogBox from resource, get "Properties"
    2. "General" Tab: fill "X Pos" and "Y Pos"
    3. "More Styles" Tab: check "Absolute Align".

    Reply
  • SetWindowPos() works

    Posted by Legacy on 04/19/1999 12:00am

    Originally posted by: Joselito Santana

    Sure you can use SetWindowPos().  You can call it in OnInitDialog. All you have to do is
    
    

    SetWindowPos(NULL, X, Y, NULL, NULL, SWP_NOSIZE |
    SWP_NOZORDER | SWP_SHOWWINDOW);

    where X and Y are values in pixels.

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Live Event Date: December 11, 2014 @ 1:00 p.m. ET / 10:00 a.m. PT Market pressures to move more quickly and develop innovative applications are forcing organizations to rethink how they develop and release applications. The combination of public clouds and physical back-end infrastructures are a means to get applications out faster. However, these hybrid solutions complicate DevOps adoption, with application delivery pipelines that span across complex hybrid cloud and non-cloud environments. Check out this …

  • Due to internal controls and regulations, the amount of long term archival data is increasing every year. Since magnetic tape does not need to be periodically operated or connected to a power source, there will be no data loss because of performance degradation due to the drive actuator. Read this white paper to learn about a series of tests that determined magnetic tape is a reliable long-term storage solution for up to 30 years.

Most Popular Programming Stories

More for Developers

RSS Feeds