返回列表 发帖

[VC++] Visual C++ 编程技巧之二

9. 如何改变窗口的图标?

向窗口发送 wm_section消息。

example:

hicon hicon=afxgetapp() ->loadicon(idi_icon);

assert(hicon);

afxgetmainwnd() ->sendmessage(wm_section,true,(lparam) hicon);

10. 如何改变窗口的缺省风格?

重栽 cwnd:: precreatewindow 并修改createstruct结构来指定窗口风格和其他

创建信息.

example: delete "max" button and set original window's position and size

bool cmainframe:: precreatewindow (createstruct &cs)

{

cs.style &=~ws_maxinizemox;

cs.x=cs.y=0;

cs.cx=getsystemmetrics(sm_cxscreen/2);

cs.cy=getsystemmetrics(sm_cyscreen/2);

return cmdiframewnd ::precreatewindow(cs);

}

11. 如何将窗口居中显示?

easy, call function cwnd:: center windows

example(1): center window( ); //relative to it's parent

// relative to screen

example(2): center window(cwnd:: getdesktopwindow( ));

//relative to application's mainwindow

afxgetmainwnd( ) -> center window( );

12. 如何让窗口和 mdi窗口一启动就最大化和最小化?

先说窗口。

在 initstance 函数中设定 m_ncmdshow的 取值.

m_ncmdshow=sw_showmaxmized ; //最大化

m_ncmdshow=sw_showminmized ; //最小化

m_ncmdshow=sw_shownormal ; //正常方式

mdi窗口:

如果是创建新的应用程序,可以用 mfc appwizard 的advanced 按钮并在

mdi子窗口风格组中检测最大化或最小化; 还可以重载 mdi window 的

precreatewindow函数,设置ws_maxmize or ws_minmize;

如果从 cmdichildwnd 派生,调用 oninitialupdate函数中的 cwnd::show

window来指定 mdi child window的 风格。

13. 如何使程序保持极小状态?

很有意思的 问题

这么办: 在恢复程序窗体大小时, windows会发送wm_query-open消息,

用 classwizard设置成员函数 onqueryopen() ,add following code:

bool cmainframe:: onqueryopen( )

{

return false;

}

14. 如何限制窗口的大小?

也就是 fixeddialog形式。 windows 发送 wm_getmaxmininfo消息来跟踪,

响应它,在 ongetmaxmininfo 中写代码:

15. 如何使窗口不可见?

很简单,用sw_hide 隐藏窗口,可以结合 findwindow,showwindow 控制.

16. 如何使窗口始终在最前方?

两种途径.

bringwindowtotop(handle);

setwindowpos函数,指定窗口的 最顶风格,用ws_ex_topmost扩展窗口的 风格

example:

void toggletopmost( cwnd *pwnd)

{

assert_valid(pwnd);

pwnd ->setwindowpos(pwnd-> getstyle( ) &ws_ex_topmost)?

&wndnotopmost: &wndtopmost,0,0,0,0,ssp_nosize|wsp_nomove);

}

学习,学不会也顶

TOP

返回列表

Powered by Discuz! 7.2   论坛QQ群:逐梦论坛群

© 2001-2021 Comsenz Inc. 鲁公网安备 37120302000001号