《C/C++編程之MFC編寫復(fù)制工具》要點(diǎn):
本文介紹了C/C++編程之MFC編寫復(fù)制工具,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
C/C++打造專屬復(fù)制工具
工具: vs2013/vs2015/vs2010/VC 6.0 ---編譯器
必要的能力:C/C++ 基礎(chǔ) win32/MFC基本框架
更多問題解答,學(xué)習(xí)交流,請(qǐng)少俠駐足:C/C++學(xué)習(xí)交流 8群 491994603
更多問題解答,學(xué)習(xí)交流,請(qǐng)少俠駐足:C/C++學(xué)習(xí)交流 8群 491994603
然后就是寫代碼.代碼比擬多,小便在這里就獻(xiàn)上主要代碼:
CString m_strF1;
CString m_strF2;
CString m_strF3;
CString m_strF4;
CString m_strF5;
CString m_strF6;
CString m_strF7;
CString m_strF8;
//函數(shù)的使用:: 全局的函數(shù)--函數(shù)調(diào)用
//注冊(cè)F1-F8熱鍵
::RegisterHotKey(m_hWnd, 1001, NULL, VK_F1); //注冊(cè)熱鍵F1
::RegisterHotKey(m_hWnd, 1002, NULL, VK_F2); //注冊(cè)熱鍵F1
::RegisterHotKey(m_hWnd, 1003, NULL, VK_F3); //注冊(cè)熱鍵F1
::RegisterHotKey(m_hWnd, 1004, NULL, VK_F4); //注冊(cè)熱鍵F1
::RegisterHotKey(m_hWnd, 1005, NULL, VK_F5); //注冊(cè)熱鍵F1
::RegisterHotKey(m_hWnd, 1006, NULL, VK_F6); //注冊(cè)熱鍵F1
::RegisterHotKey(m_hWnd, 1007, NULL, VK_F7); //注冊(cè)熱鍵F1
::RegisterHotKey(m_hWnd, 1008, NULL, VK_F8); //注冊(cè)熱鍵F1
if (nHotKeyId == 1001) //F1 Id 是1001 注冊(cè)的時(shí)候的id
{
//如果編輯框沒有內(nèi)容,沒有需要拷貝到剪切板
if (m_strF1.IsEmpty())
return;
//把筆墨放到剪切板里面去
if (OpenClipboard()) //打開剪切板 成功
{
//清空剪切板
EmptyClipboard();
//分配內(nèi)存
//char wchat_t
// malloc
// char * p=(char *)malloc(sizeof(char)*n)
//不是從事算法這塊/服務(wù)器/游戲
TCHAR *buffer = (TCHAR *)GlobalAlloc(GMEM_DDESHARE, m_strF1.GetLength() + 1);
//綁定內(nèi)存--讓指針指向分配內(nèi)存的首地址
buffer = (TCHAR *)GlobalLock(buffer);
//復(fù)制到buffer ------- 字符串復(fù)制 strcpy
strcpy(buffer, m_strF1.GetBuffer()); //如果報(bào)錯(cuò),改為寬字節(jié)編碼
//這里報(bào)錯(cuò)了,要你使用_s 系列 _getch _kbhit scanf_s
//解鎖綁定內(nèi)存
GlobalUnlock(buffer);
//指定數(shù)據(jù)依照指定格式放到剪切板
SetClipboardData(CF_TEXT, buffer); //CF_TEXT 代表數(shù)據(jù)樣式 :Edit數(shù)據(jù)
//關(guān)閉剪切板
CloseClipboard();
}
//模擬按鍵 ---keybd_event() 模擬
/*
視頻 +源碼+筆記
*/
//按F1 實(shí)現(xiàn)Ctr+v的功能
keybd_event(VK_CONTROL, 0, 0, 0); //按下ctrl
keybd_event(_T('V'), 0, 0, 0); //按下v鍵
//釋放
keybd_event(_T('V'), 0, KEYEVENTF_KEYUP, 0); //構(gòu)造函數(shù)+析構(gòu)函數(shù)的順序相反
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
return;
}
//多行輸入 ------按下Enter 實(shí)現(xiàn) \r\n
注意是:處理按鍵是修改消息函數(shù):PreTranslateMessage(MSG* pMsg)
if ((WM_KEYFIRST <= pMsg->message) && (pMsg->message <= WM_KEYLAST))
{
//通用消息,和專用消息 : 高四位 低四位
if (pMsg->wParam == VK_RETURN) //按鍵消息等于Enter
{
HWND hWnd = ::GetFocus(); //獲取當(dāng)前鼠標(biāo)所在窗口的句柄
int iID = ::GetDlgCtrlID(hWnd); //獲取這個(gè)控件 的ID
if (iID == IDC_EDIT1) //判斷是否是第一個(gè)編纂
{
//在本來的數(shù)據(jù)前面加\r\n;
CString sData;
sData.Empty(); //清空sData
int lenData = 0; //初始化長(zhǎng)度
GetDlgItemText(IDC_EDIT1, sData); //獲取編纂框中內(nèi)容
sData += "\r\n";
SetDlgItemTextA(IDC_EDIT1, sData); //結(jié)果顯示在編纂框
lenData = sData.GetLength();
((CEdit*)GetDlgItem((IDC_EDIT1)))->SetSel(lenData, lenData);
}
}
第一步:初始化的文件操作
CFile file1;
if (!file1.Open("1.txt", CFile::modeRead))
{
m_strF1 = "strF1";
}
else{
char pBuffer[256] = { 0 };
file1.Read(pBuffer, 256);
m_strF1 = pBuffer;
file1.Close();
}
第二步:修改內(nèi)容后的操作,必要為控件添加控件事件
voidCMyCopyToolDlg::OnEnChangeEdit1()
{
UpdateData(TRUE);
CFile file;
if (file.Open("1.txt", CFile::modeWrite | CFile::modeCreate))
{
file.Write(m_strF1, m_strF1.GetLength());
file.Close();
}
}
更多問題解答,學(xué)習(xí)交流,請(qǐng)少俠駐足:C/C++學(xué)習(xí)交流 8群 491994603
好了到這里,一個(gè)完美的聊天助手已經(jīng)誕生,要注意是上面都是以第一個(gè)編纂框?yàn)槔?所以代碼你得重復(fù)8次哈哈.
維易PHP學(xué)堂逐步分享更多《C/C++編程之MFC編寫復(fù)制工具》相關(guān)教程。歡迎交流
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/9112.html