MFC-SetWindowPos-位图按钮-扩展对话框-更改Logo

来源:互联网 发布:州立大学 知乎 编辑:程序博客网 时间:2024/06/06 01:17

1.对话弹出框位置

在主界面点击按钮,产生新的对话框,默认这个对话框是在主界面中间,要对弹出位置进行调整,在OnInitDialog()中调用SetWindowPos函数,原型为:

BOOL SetWindowPos(HWND hWnd, const CWnd* pWndInsertAfter, int x, int y,int cx, int cy, UINT nFlags),最后一个参数不能取SWP_NOMOVE(这个参数将会会忽略x,y),x,y设定对话框弹出位置(坐标为相对于屏幕左上角),若要设置相对于主菜单的位置,可采用如下代码:

CWnd* pWnd = AfxGetMainWnd();//获得主对话框句柄pWnd->GetWindowRect(rectMain);//recMain为CRect类型变量,读取主对话框位置位置SetWindowPos(NULL,rectMain.left,rectMain.top+30,rectsmall.Width(),rectsmall.Height(),SWP_NOZORDER);//在主对话框坐标基础上加减坐标即可

movewindow函数也可以实现这个功能,二者区别如下链接:

http://blog.csdn.net/happymawolf/article/details/6757928


2.扩展对话框,参考孙鑫的VC++深入详解第七章P248


3.设置按钮位图

3.1调整按钮Owner Draw属性为TRUE

3.2导入按钮位图

3.3为按钮添加CBitmapButton类型变量,(不知道为什么用VS2012不能用类向导添加这个类型的变量,只能先添加CButton类型的变量,手动更改,注意除了头文件,DodataExchange函数里也要更改,Cbutton类型的变量不能加载位图)

3.4加载位图

在OnInitDialog()函数中添加以下代码

m_btButton.LoadBitmaps(IDB_BITMAP1,IDB_BITMAP2,IDB_BITMAP3,IDB_BITMAP4);   //载入  m_btButton.SizeToContent();  //使按钮适应图片大小  

参考链接:

http://blog.csdn.net/akof1314/article/details/4951836/

这种写法按钮将会跟着图片大小走,为了准备好适当大小的图片,可以采用如下代码:

将下列代码放在主对话框相应按钮的响应函数里在下一步设置断点,这样可以观察到按钮左右上下坐标,相减即可得到按钮大小(单位是像素)

CRect test;GetDlgItem(IDC_DRIVER_SEPARATOR)->GetWindowRect(&test);

4.更改应用程序Logo

参考链接如下:

http://www.chinaitlab.com/c/vc/944108.html




0 0
原创粉丝点击