MFC 界面图标替换 程序图标替换

一、修改程序运行时窗口图标的方法:
在OnInitDialog函数中添加:
//加载图标
HICON hIcon = AfxGetApp()->LoadIcon(IDI_HK);
//设置图标
SetIcon(hIcon, FALSE);
二、修改程序exe图标的方法:
打开resource.h文件,MFC自动生成IDR_MAINFRAME的ID是128,自己添加的ICON文件都大于这个值,而VC默认以最小值做为EXE图标,所以我们只需要将自己的资源ID改低于128就可以了。
三、得到控件的矩形位置
CRect  rectBtn;   
GetDlgItem(IDC_BTN_ESCAPE)->GetWindowRect(&rectBtn);   
rectBtn中获取的是以屏幕为坐标轴,按钮在屏幕上的位置。
而使用下面的语句:
CRect  rectBtn;   
GetDlgItem(IDC_BTN_ESCAPE)->GetClientRect(&rectBtn);   
rectBtn中获取的是以ID为IDC_BTN_ESCAPE(按钮)的窗口的最左上角的点为坐标原点,按钮的位置。
通过上述分析可知:

GetWindowRect();获取的是以屏幕为坐标轴,此窗口在屏幕上的位置。

GetClientRect();获取的是以其自身的最左上角的点为坐标原点,此窗口的位置。

四、界面的切换。

对于一个应用程序,对话框之间的跳转需要一个类似容器的窗口新建一个对话框(标注为empty对话框),在里面不加任何东西,调好大小,因为它就是你的应用程序的窗口大小这时建好所有你要跳转的对话框,通常有个主界面对话框(标注为main对话框),我们要做的就是把main放入到那个empty中,其中有一步很重要,把main的属性(border改为thin或none,style改为child)接下来讲讲如何把main放入empty

#include"maindlg.h"

#include"setupdlg.h" 

//初始参数

public:

      CDialog *m_pPages[14];//定义的14,就是说能够存放的最多对话框,根据需求改变

      UINT m_IDD[14];        //每个对话框对应的IDD_XXX

      int m_nNumOfPage;  //标示数组下标

      CRect showRect;     //画布

      CMainDlg  *d_main;

      CSetupDlg   *d_setup;

public:

BOOLAddPage(CDialog* pDialog,UINT ID);//添加进空对话框

 void ShowPage(int CurrentPage);     //把你所需要显示的对话框显示出来

CEmptyDlg  --emptydlg.cpp

  m_nNumOfPage=0;

 d_main = new CMainDlg(this);//this即empty对话框的窗口指针,就是说新建一个子对象指针

 d_setup = new CSetupDlg (this);

BOOLCEmptyDlg::AddPage(CDialog* pDialog,UINT ID)

{

 m_pPages[m_nNumOfPage]=pDialog;

 m_IDD[m_nNumOfPage]=ID;

 m_pPages[m_nNumOfPage]->Create(ID,this);

 m_pPages[m_nNumOfPage]->MoveWindow(&showRect);

 m_nNumOfPage++;

 return true;

}

voidCEmptyDlg::ShowPage(int CurrentPage)

{

 for(intnCount=0;nCount<m_nNumOfPage;nCount++)

 {

  if(nCount==CurrentPage)

  {

   m_pPages[nCount]->ShowWindow(SW_SHOW);

   continue;

  }

  m_pPages[nCount]->ShowWindow(SW_HIDE);

 }

}

BOOL CEmptyDlg::OnInitDialog()

{

 CDialog::OnInitDialog();

showRect.SetRect(-5,-5,800,600);

 this->AddPage(d_main,IDD_DEK265_MAIN);

 this->AddPage(d_setup,IDD_DEK265_SETUP);

this->ShowPage(0);//把main对话框显示出来

}

main对话框 按钮函数

voidCMainDlg::ClickBtnMaint()

{

 // TODO: 在此处添加消息处理程序代码

 CEmptyDlg *pMMD =(CEmptyDlg*)AfxGetMainWnd();  

 pMMD->ShowPage(1);//跳到setup对话框

}



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值