MFC下使用VC++的一些功能与技巧

长期在MFC下使用VC++,记录一些基础的常用的功能与技巧

(长期更新)

1、SetDlgItemText (IDC_BUTTON1,_T("这个是按钮改变后的标题"));

2、GetDlgItem(IDC_BUTTON1)->ShowWindow(SW_SHOW);//SW_HIDE

3、if(IDCANCEL==AfxMessageBox(_T("即将打开窗口,是否继续!"),MB_OKCANCEL|MB_ICONWARNING)) return;

4、CString与int转换。

strValue.Format(L"%d", 1);//float为"%f"

int  a = _ttoi(strValue);

5、内存泄漏检查。在初始时加入_CrtSetBreakAlloc(453);//453为调试时编译器提供的内存泄漏地方

启动调试后会在内存泄漏的地方停止,方便排除问题。

6、注册热键。RegisterHotKey(GetSafeHwnd(),7788,NULL,VK_SPACE);//初始化时加入,VK_SPACE为空格

7、if (strMsg.CompareNoCase(_T("T")))//true为strMsg==T
strMsg.Find(T("T"));//0为strMsg包含有TCString a,b;
a = "123456789";
b =a.Left(4);  //值为:1234
b =a.Mid(3); //值为:456789
b = a.Mid(2, 4); //值为:3456
b = a.Right(4);  //值为:678

8、用事件同步线程。

ResetEvent(g_hStopRecv);        
SetEvent(g_hStopRecv);
初始化中添加:HANDLE g_hStopRecv = ::CreateEvent(NULL, TRUE, FALSE, _T("728-CB70"));
线程中添加:if (WaitForSingleObject(g_hStopRecv, 0) == WAIT_OBJECT_0) break;

9、TCHAR与CString转换。很多场合用TCHAR保存或传递数据比较方便。

    //CString转TCHAR
    CString strTemp = _T("哈哈哈");
    memset(szTemp, 0, sizeof(TCHAR)*MAX_PATH);
    _tcsncpy(szTemp, strTemp, strTemp.GetLength());
    //TCHAR转CString
    TCHAR szTemp[MAX_PATH];
    szTemp="哇哈哈";
    CString strTemp;
    strTemp.Format(_T("%s"), szTemp);

10、串口发送字符串要求换行时:

CString strSend(_T("ha"));
strSend.Format(_T("%s%c%c"),strSendMsg,0x0D,0x0A);//0x0D:\r,0x0A:\n

11、线程使用

/*声明*/
HANDLE m_hThreadWaitRecData;
static DWORD WINAPI ThreadWaitRecData(LPVOID lpData);

/*关闭该线程*/
if (!m_hThreadWaitRecData)
{
    CloseHandle(m_hThreadWaitRecData);
    m_hThreadWaitRecData = NULL;
}

/*初始化*/
m_hThreadWaitRecData = NULL;

/*建立线程*/
DWORD dwThreadID = 0;
if (m_hThreadWaitRecData == NULL)
    m_hThreadWaitRecData = ::CreateThread(NULL, 0, CXXXDlg::ThreadWaitRecData, this, 0, &dwThreadID);

/*线程函数*/
DWORD CXXXDlg::ThreadWaitRecData(LPVOID lpParam)
{
    if (NULL==(CXXXDlg*)lpParam) return 0;
    while (1)
    {
        ((CXXXDlg*)lpParam)->DoSomething();
    }
}
12、CWnd 与HWND的转换

    /*CWnd转HWND*/
    CWnd *pWnd = GetDlgItem(IDC_DLG_XXX);
    HWND hWnd = pWnd->GetSafeHwnd();
    /*HWND转CWnd*/
    HWND hWnd=GetSafeHwnd();
    CWnd* pWnd;
    pWnd=FromHandle(hWnd);
    /*获取父窗口的句柄*/
    HWND hWndCtrl=::GetParent(GetSafeHwnd());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值