MFC 設定對話方塊位置

2021-06-08 12:29:51 字數 1430 閱讀 2512

今天想寫個程式,需要對話方塊在螢幕的右下角。懶得想就去網上搜搜,不過卻沒找到什麼好的。大部分都是給個函式movewindow,或者setwindowpos卻不給大家寫用法。比如怎麼的到對話方塊的大小等等!反正就是不方便向我一樣新手學習。

所以我今天就獻醜了,把這寫出來。雖然沒什麼難度,高手可不要鄙視阿!

希望對別人有幫助。

因為我是在乙個帶定時器的對話方塊ontimer函式中呼叫另乙個對話方塊所以用了指標

沒用domodal() 不過道理是一樣的

chipdlg是idd_hip_dialog的類

chipdlg*m_hipdlg; 

//先定義

m_hipdlg=newchipdlg(this);

m_hipdlg->create(idd_hip_dialog,this); 

// 建立對話方塊

crect rcdlgs;

m_hipdlg->getwindowrect(rcdlgs); 

//得到對話方塊的rect 對話方塊的大小

screentoclient(rcdlgs); 

//把螢幕的值轉成相應的實際的值

int 

cx = 

getsystemmetrics( 

sm_cxscreen 

);  //獲得螢幕的解析度

int 

cy = 

getsystemmetrics( 

sm_cyscreen 

); cx cy,就是螢幕最右下角的x,y的值

//m_hipdlg->movewindow(cx-rcdlgs.width(),cy-rcdlgs.height(),rcdlgs.width(),rcdlgs.height(),true); //

//movewindow的引數前兩個是對話方塊的x,y位置 

//三四個是對話方塊的大小 ,最後以個不用管! 

m_hipdlg->setwindowpos(&wndtopmost,cx-rcdlgs.width(),cy-rcdlgs.height(),rcdlgs.width(),rcdlgs.height(),swp_nosize);

//setwindowpos第乙個我寫的意思讓對話方塊制頂。有需要可以查我就不細寫了

//後面4個和 movewindow一樣

//最後乙個是屬性我填的不讓他變大小,屬性有很多,但是不能填寫nomove,不//然無法移動!!!

movewindow 和setwindowpos選擇乙個就好了 推薦後者

m_hipdlg->showwindow(sw_show);

好了 對話方塊就在右下角了 要是左上角 那是

m_hipdlg->setwindowpos(&wndtopmost,0,0,rcdlgs.width(),rcdlgs.height(),swp_nosize);

好了 就這些吧·!

設定對話方塊的顯示位置(模態對話方塊)

筆者在做mfc單文件的專案時發現有的視窗必須是模態視窗,為了設定視窗的位置,筆者也找了之前的 研究,發現模態對話方塊的視窗位置設定跟非模態不同 非模態請參考筆者另外一篇部落格 模態對話方塊設定初始位置特別簡單 在對話方塊的oninitdialog 中呼叫setwindowpos 就好了 crect ...

mfc 子對話方塊控制父對話方塊 MFC對話方塊構架程式

遺憾的是 從來沒有被堅定選擇過,就像是,他只是剛好需要,你只是剛好在。網易雲熱評 一 對話方塊架構分類 1 模式對話方塊,彈出來不能進行其他操作 2 無模式對話方塊,彈出來後可以進行其他操作 二 新建win32應用程式 模式對話方塊 1 建立 2 修改屬性 3 新增dialog資源 4 包含標頭檔案...

MFC 對話方塊

1 建立對話方塊模板,設定對話方塊屬性 cadditionddlg 主對話方塊類 顯示的主要介面 addition的資源樹 4個子項 dialog 對話方塊 含有2個對話方塊模板 id為idd aboutbox 關於對話方塊模板 idd addtion dlalog 主對話方塊模板 lcon 圖示 ...