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); }


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


  • 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!


  • 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

  • Modeless

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

    Originally posted by: Dep

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

  • 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
    // ...
    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)
    if((lpwndpos->flags & SWP_SHOWWINDOW) && m_bHideOnStart){
    lpwndpos->flags &= ~SWP_SHOWWINDOW;

  • 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...

  • 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 ,

  • 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".

  • 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 |

    where X and Y are values in pixels.

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

Top White Papers and Webcasts

  • Lenovo recommends Windows 8 Pro. "I dropped my laptop getting out of the taxi." This probably sounds familiar to most IT professionals. If your employees are traveling, you know their devices are in for a rough go. Whether it's a trip to the conference room or a convention out of town, any time equipment leaves a user's desk it is at risk of being put into harm's way. Stay connected at all times, whether at the office or on the go, with agile, durable, and flexible devices like the Lenovo® …

  • Being first and fast to market is critical for success. In today's hyper-competitive environment, driving innovation to stay ahead of the competition relies on the ability to seize new opportunities to develop IT solutions faster and more efficiently. This Executive Brief discusses how organizations can meet this high-pressure challenge by moving development of enterprise applications to the cloud, leveraging Platform-as-a-Service (PaaS) and in the process reducing costs, avoiding complexity, and increasing …

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date