便签总结

来源:互联网 发布:k软件制作 编辑:程序博客网 时间:2024/04/29 10:25

1:AfxMessageBox("开机启动成功");和Messagebox("开机启动成功");之间的区别

        AfxMessageBox是全局变量,在哪都可以用,而Messagebox是局部变量,MessageBox是类CWnd的一个函数,在CWnd类中或其派生类         中是全局的。

        他们的参数可以使1,3,4(API中要用四个);
        MessageBox:从CWnd类继承过来的用1,3个参数就行,但从CWinApp继承过来的要用4个参数。
        AfxMessageBox:在哪都可以用一个参数。

2:配置文件的使用:
       //写进配置文件,Note是字段名,str是键名(也就是变量名),stence[name]是键值(也就是变量的值), ".\\stent.ini"是当前路       径(配置文件的位置)
       //键名和键值都是CString类型的,在MFC中字符串类型的数据是CString
        WritePrivateProfileString("Note",str,stence[name],".\\stent.ini");

       //从配置文件中读出,m_s也是键名,stence[name]也是键值
       GetPrivateProfileString("Note", m_s, "", stence[name].GetBuffer(MAX_PATH), MAX_PATH, ".\\stent.ini");

       m_s.Format("%d", name);这句话表示将int类型的name转换成CString类型的m_s,然后再用配置文件进行读写。

      CTime tm;//时间函数
      m_edit = tm.Format("%Y-%m-%d");//转化成CString类型,将日期转换成字符串型的,m_edit是给编辑框添加的一个变量它也是CString类型的。

3:控件:日期时间选取器的使用
       CTime tm;//定义时间函数类的一个对象tm
       m_riqi.GetTime(tm);//从日历中选择的时间放到tm中
      //给日期时间选取器添加一个变量m_riqi,其类型为CDateTimeCtrl, 
     //这句话意思为日期时间选择器(CDateTimeCtrl)类型的变量m_riqi从日历中获取时间到tm中。

4:设置配景颜色的透明度
       首先选中滑块单击右键选择建立类向导,在Message中选择NM_CUSTOMDRAW(移动滑块的同时透明度跟着变化),若选择 NM_RELEASEDCAPTURE则表示移动滑块松掉鼠标后透明度才变化。然后选Addfunction,然后确定,这些是为了添加消息响应的功能       ,(当滑块有变动的时候数值就变动)然后再给滑块添加一个变量,例如:m_slider,它是CSliderCtrl类型的。
       将头文件中的新加的有关滑块的函数,参数改为如下形式:
       afx_msg void OnCustomdrawSlider1(UINT nSBCode, UINT nPos, CScrollBar *pScrollBar);
       然后将cpp文件中此函数写成如下形式:
       void CMyDlg::OnCustomdrawSlider1(UINT nSBCode, UINT nPos, CScrollBar *pScrollBar)
       {
    // TODO: Add your control notification handler code here

    BYTE eff=(BYTE)
    m_slider.GetPos();
    HINSTANCE hInst = LoadLibrary("User32.DLL");
    if(hInst)
     {           
  typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);         
  MYFUNC fun = NULL;
  fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");
  if(fun)
     {
   fun(this->GetSafeHwnd(),0,eff,2);
      } 
  FreeLibrary(hInst);
      };
   CString m_percentage;
   m_percentage.Format("%%%d",100*eff/255);
   GetDlgItem(IDC_STATIC2)->SetWindowText(m_percentage); //IDC_STATIC2是静态变量%处的位置的ID(名字),这是让数值变                                                                   //化的
 
   //*pResult = 0;
       }

       //SetWindowText是一个Windows API函数。该函数改变指定窗口的标题栏的文本内容(如果窗口有标题栏)。如果指定窗口是一个        //控件,则改变控件的文本内容。然而,SetWindowText函数不改变其他应用程序中的控件的文本内容。
       //GetDlgItem返回窗口中指定参数ID的子元素的句柄,可以通过返回的句柄对窗口内的子元素进行操作,
          例如下面的代码
          HWND GetDlgItem( int nID)const;
            说明——
              参数 nID:接收消息的控件的标识;
              返回值:标识所标记的控制窗口句柄;
5:开机自启

    选择复选框,然后双击,代码如下:
       void CMyDlg::OnCheck1()
  {
 // TODO: Add your control notification handler code here
 HKEY hKey;
 //到系统的启动项  
 LPCTSTR lpRun = "Software\\Microsoft\\Windows\\CurrentVersion\\Run";
 //得到程序自身的全路径
 char pFileName[MAX_PATH] = {0};
  
 //添加一个子Key,并设置值 // 下面的"test"是应用程序名字(不加后缀.exe)
  
 long lRet;
 
 if (BST_CHECKED == IsDlgButtonChecked(IDC_CHECK1))
 {
  //开机自起
  //打开启动项Key
  lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpRun, 0, KEY_WRITE, &hKey);
  DWORD dwRet = GetModuleFileName(NULL, pFileName, MAX_PATH);
  if(lRet == ERROR_SUCCESS)  
  {    
   lRet = RegSetValueEx(hKey, "test", 0, REG_SZ, (BYTE *)pFileName, dwRet);  
   if(lRet == ERROR_SUCCESS)  
   {  
    AfxMessageBox("开机启动成功");
   
   }  
   else
   {   
    AfxMessageBox("开机启动设置失败");  
   } 
   //关闭注册表 

   RegCloseKey(hKey);  
  } 
 }
 else
 {
  //删除子项函数
  lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpRun, 0, KEY_WRITE, &hKey);
 
  if(lRet == ERROR_SUCCESS)  
  {  
   lRet = RegDeleteValue(hKey, "test"); 
   RegCloseKey(hKey);  
   if(lRet == ERROR_SUCCESS)  
   {  
    AfxMessageBox("取消开机启动成功");
   
   }  
   else
   {   
    AfxMessageBox("取消开机启动设置失败");  
   } 
  }
 }

 
   }
6:设置编辑框控件的背景,文本颜色及对话框的颜色
      在对话框头文件中,定义画刷对象和颜色结构
      例如:
       public: 
 CColorEditBoxdlg(CWnd* pParent=NULL);
 CBrush m_brush1, m_brush2;  //定义画刷
 COLORREF m_color1, m_color2, m_textcolor;//定义颜色结构
      在对话框的初始化函数OnInitDialog中,进行相应的初始化
       例如:
       BOOL CMyDlg::OnInitDialog()
       {
         CDialog::OnInitDialog();
         ······
         // TODO: Add extra initialization here
        m_color1=RGB(180, 180, 100);//两种颜色
 m_color2=RGB(100, 100, 100);
 m_textcolor=RGB(0, 0, 0);//黑色文本(字体是黑色的)
 m_brush1.CreateSolidBrush(m_color1); //画刷,颜色为color1 
 return TRUE;  // return TRUE  unless you set the focus to a control

       }

     使用ClassWizard(建立类向导)为对话框添加VM_CTLCOLOR消息映射和消息响应函数OnCtlColor,实现编辑框的颜色设置,例如:

      HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
     {
 HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
 
 // TODO: Change any attributes of the DC here
 if(pWnd->GetDlgCtrlID()== IDC_EDIT1)  //表示在这个编辑框内,如果没有if判断的话整个对话框都变成控件的颜色了
 {

 pDC->SetBkColor(m_color1);//输入文本的底色,将文本底色与控件的颜色设为一致
 pDC->SetTextColor(m_textcolor);//输入文本的颜色
 hbr = (HBRUSH) m_brush1;//编辑框控件的填充色
 }
 
 // TODO: Return a different brush if the default is not desired
 return hbr;
      }//这里编辑框之外的颜色并没有设置。

   另外,在工程的cpp文件中,这样添加可以设置对话框的颜色。
    CMyApp::CMyApp()
   {
 SetDialogBkColor(RGB(170, 220, 230));

 // TODO: add construction code here,
 // Place all significant initialization in InitInstance
   }

7:如何将控件置为不能用
                GetDlgItem(IDC_BUTTON1)->EnableWindow(false);//IDC_BUTTON1按钮控件的标识符,意思是禁止按钮使用
  GetDlgItem(IDC_EDIT1)->EnableWindow(false); //IDC_EDIT1编辑框控件的标识符,意思是禁止编辑框使用
                GetDlgItem(IDC_BUTTON1)->EnableWindow(true);//同理,允许按钮使用
  GetDlgItem(IDC_EDIT1)->EnableWindow(true);  //同理,允许编辑框使用
                //EnableWindow该函数允许/禁止指定的窗口或控件接受鼠标和键盘的输入,当输入被禁止时,窗口不响应鼠标和按键的                //输入,输入允许时,窗口接受所有的输入

8:Updatedata函数的使用
      Updatedata(TRUE)将控件的值赋值给成员变量;(把输入一个控件中的内容赋给变量(另一个控件变量),放在赋值运算的前面)
    Updatedata(FALSE)将成员变量的值赋值给控件;(可以从控件中读出,从编辑框中显示内容在最后要加这个函数)
      例如下面的函数:
       CString str;
       int name; 
 str.Format("%d", name); 
 UpdateData(TRUE);
 m_edit = "" ;
 stence[name] = m_edit;

 WritePrivateProfileString("Note",str,stence[name],".\\stent.ini");

 UpdateData(FALSE);

9:CColorDialog的使用

        类CColorDialog支持在应用中使用颜色选择对话框。CColorDialog对象是一个拥有一个颜色列表的对话框。
        用户可以在列表中选择一种颜色,也可以定制颜色,在退出该对话框时,向应用告知选中的颜色。

COLORREF RGB

  (

  BYTEbyRed, // red component of color

  BYTEbyGreen, // green component of color

  BYTEbyBlue // blue component of color

  );

  COLORREF 是一个 32-bit 整型数值,它代表了一种颜色。你可以使用 RGB 函数来

  初始化 COLORREF。例如:

  COLORREF color=RGB(0,255,0);

  RGB函数接收三个 0-255 数值,一个代表红色,一个代表绿色,一个代表蓝色。在

  上面的例子中,红色和蓝色值都为 0,所以在该颜色中没有红色和蓝色。绿色为最大值

  255。所以该颜色为绿色。0,0,0 为黑色,255,255,255 为白色。

 

注释: 此内容是自己总结的感想,有些内容是从网上找的,如有侵犯请包涵。

 


 

 

 

          

 

      

原创粉丝点击