2010-01-28 111 views

回答

12

这实际上取决于你想创建哪些控件,特别是如果你想知道你应该设置哪些标志。一般来说,这可以归结为:

通常,CWnd派生的控件是使用CreateCreateEx创建的。对于一个CButton,例如:

CButton button; 
button.Create("Button text", WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON | DT_CENTER, CRect(5, 5, 55, 19), this, nID); 

其中CRect指定按钮位置,this是一个指向父窗口,并且nID是控制ID。

如果控件没有像预期的那样出现,可能是因为某些标志丢失。我建议你在设计模式下绘制一个示例控件,在RC文件中检查该控件的代码,并将这些标志复制到Create调用者。

至于消息映射,它们通常路由到父窗口。您在Create中使用的nID值在此非常重要,因为它将是标识消息映射中控件的编号。如果您拥有固定数量的控件,则可以对控件的nID数字进行硬编码(例如,从10000开始);如果没有,你必须提供一个方法让父窗口识别它们。然后你只需添加消息映射条目。

ON_BN_CLICKED(10000, OnBnClicked) 
ON_CONTROL_RANGE(BN_CLICKED, 10010, 10020, OnBtnsClicked) 

您可以使用ON_CONTROL_RANGE消息映射将一系列ID映射到相同的函数。