今天想寫個程式,需要對話方塊在螢幕的右下角。懶得想就去網上搜搜,不過卻沒找到什麼好的。大部分都是給個函式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 圖示 ...