//標頭檔案://
//檔名稱:alignability.h
//功能說明: 使你的視窗具有子視窗對齊能力。
//用法說明:1,在你的父視窗類中定義乙個對齊類物件(當然也可放在類外).如: calignability m_align;
// 2,為對齊類物件設定父視窗類的控制代碼。如: m_align.setparenthwnd(getsafehwnd()); (對於基於對話方塊的程式,在oninitdialog函式中呼叫。)
// 3,呼叫對齊類物件的addalignitem函式,傳入乙個子視窗控制代碼或id及對齊方式(對齊方式可用按位或運算子多選)。
// 如果對齊類物件中父視窗控制代碼及相應子視窗的控制代碼無效,或子視窗控制代碼並非父視窗的子視窗,函式呼叫將失敗。
// 如:rect eds = ; m_align.addalignitem(idc_edit_content, leftalign|topalign|rightalign|bottomalign, &eds);
// (對於基於對話方塊的程式,在oninitdialog函式中呼叫。),在大部分情況下,你可以忽略addalignitem函式的最後乙個引數,
// 這個引數是用來顯示設定相應子控制項的四邊到父視窗四邊的距離(以畫素為單位),這對於非設計期放置的子控制項的對齊設定很有用.
// 4,當你的視窗的子控制項需要對齊的時候,呼叫align函式。如:m_align.align(); (通常在父視窗的wm_size訊息處理函式中呼叫)。
#endif //alignability_h_
//實現檔案://
檔名稱:alignability.cpp
#include "alignability.h"
#include
#ifdef _debug
#undef this_file
static char this_file=__file__;
#define new debug_new
#endif
//// construction/destruction
//calignability::calignability(hwnd hwndparent/*=0*/)
:m_hwndparent(hwndparent)
calignability::~calignability()
bool calignability::addalignitem(int nsubwndid, int aligntype, rect* lpeds/* =0 */)
bool calignability::addalignitem(hwnd hwndchild, int aligntype, rect* lpeds/* =0 */)
rect subwndrect, parentwndrect;
::getclientrect(m_hwndparent, &parentwndrect);
if(::iswindow(hwndchild))
m_alignset.push_back(aligncfg(hwndchild, aligntype, orieds));
return true;
}return false;
}void calignability::align()
rect rect;
::getclientrect(m_hwndparent, &rect);
const int cxparent = rect.right - rect.left;
const int cyparent = rect.bottom - rect.top;
hwnd hwndchild = 0;
for(long i=0, n=m_alignset.size(); i < n; ++i)
if(m_alignset[i].m_etype & topalign)
if(m_alignset[i].m_etype & rightalign)
if(m_alignset[i].m_etype & bottomalign)
::movewindow(hwndchild, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, true);
}else} }
hwnd calignability::getparenthwnd() const
bool calignability::setparenthwnd(hwnd hwndparent)
return false;
}
C 子視窗呼叫父視窗控制項的委託實現
有時子窗體的操作需要實時呼叫父窗體中的控制項操作,比如在父窗體的文字框中顯示子窗體中的輸出 主窗體 csharp view plain copy mainform.cs public partial class mainform form private void button1 click obj...
C 子視窗呼叫父視窗控制項的委託實現
有時子窗體的操作需要實時呼叫父窗體中的控制項操作,比如在父窗體的文字框中顯示子窗體中的輸出 主窗體 csharp view plain copy mainform.cs public partial class mainform form private void button1 click obj...
C 中父視窗和子視窗之間實現控制項互操作
很多人都苦惱於如何在子窗體中操作主窗體上的控制項,或者在主窗體中操作子窗體上的控制項。相比較而言,後面稍微簡單一些,只要在主窗體中建立子窗體的時候,保留所建立子窗體物件即可。下面重點介紹前一種,目前常見的有兩種方法,基本上大同小異 第一種,在主窗體類中定義乙個靜態成員,來儲存當前主窗體物件,例如 然...