MFC项目遇到的问题(二)

①在线生成图标的网站
http://www.ico51.cn/
http://www.xwidea.cn/
②vector、map 判断某元素是否存在、查找指定元素

1.判断某元素是否存在
        vector<string> vStr;
         
        int nRet = std::count(vStr.begin(), vStr.end(), "xiaochun");//判断vector中是否有 
 2.查找某个元素
     
        方法一:
 
          自己写循环遍历
 
 
        方法二:
 
          vector<string> vec;
 
          vector<string>::iterator iter;
 
          string gpcode="SZ000001";
 
          iter = find(vec.begin(), vec.end(), gpcode);
 
          if(iter != vec.end())
          {
            //vec中存在"SZ000001"
          }
 
          else
          {
            //没找到
          }   
二、map
 
    1.判断某key是否存在
        map<int, string> mapDemo;
         
        int nRet = mapDemo.count(100);//判断mapDemo中是否有 key = 100 的元素
         
    2.查找某个key
        map<int, string>::iterator iter = mapDemo.find(100);
        if (iter != m_Int.end())
        {
            //找到了
        }
        else
        {
            //没找到
        }

③二分法查找法查找key值

#include<stdio.h>
#include<math.h>
#include<string.h>

int BS(int a[],int x,int n)
{
    int start=0,end=n-1;
    while(start<=end)
    {
        int mid=(start+end)/2;
        if(x<a[mid])
        {
            end=mid-1;
        }
        else if(x>a[mid])
        {
            start=mid+1;
        }
        else
        {
            return mid;
        }
    }
    return -1;
}

int main()
{
    int a[]={1,12,23,34,45,56,67,68,89};
    int n=9,x;
    scanf("%d",&x);
    printf("%d",BS(a,x,n));
    return 0;
}

④C++ vector 容器中删除第i项

v1.erase(v1.begin()+i);//本程序中,i设定为1,即删除第1个元素

⑤如何删除字符串中所有指定的字符

    string s="-daas-j--kdj-al-";
    string::iterator it;
    for(it=s.begin();it!=s.end();it++)
    if(*it=='-'){
    s.erase(it);
    it--;

⑥mfc如何关闭对话框

void NewButton::OnOK()
 { // TODO: Add extra validation here 
 CDialog::OnOK();
  }

⑦MFC中实现单击按钮弹出对话框的方法

1、资源视图-->Dialog-->右键-->添加资源-->新建-->对话框-->对话框按右键--添加类。例:添加CNewDlg类,在所要调的代码中(按钮点击方法中),先加头文件#include  "CNewDlg.h ",之后在按钮点击方法中:
void COnclickDlg::OnBnClickedOk()//第一种

{
   CNewDlg  Dlg;
   Dlg.DoModal();//模态对话框
}void COnclickDlg::OnBnClickedOk()//第二种
 {
  CNewDlg *dlg=new CNewDlg;//非模态
   dlg->Create(IDD_DIALOG1,this);    //第一个参数是对话框ID号
   dlg->ShowWindow(SW_SHOW);         
}
或
voidCOnclickDlg::OnBnClickedOk() //第三种
{
  m_DemoDlg1.ShowWindow(SW_SHOW); 
        //需要在主体函数初始化里加上
 m_DemoDlg1.Create(IDD_DIALOG1,this);
 }
2、创建非模态的另一种方法
首先, 在工程的资源里面3个对话框(假设ID是IDR_MENU1, IDD_DIALOG1, IDD_DIALOG2, IDD_DIALOG3);
其次, 对按钮响应的函数里添加一个COMMEND MESSAGE, 系统会自动生成一个函数, 在函数里面写以下代码
 // TODO: Add your command handler code here
 CDialog* dlg = new CDialog;//非模态
 dlg->Create(MAKEINTRESOURCE(IDD_DIALOG1));
 dlg->ShowWindow(1);
 其他两项也一样的做法
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值