Zi 字媒體
2017-07-25T20:27:27+00:00
工具: vs2013/vs2015/vs2010/VC 6.0 ---編譯器需要的能力:C/C++ 基礎 win32/MFC基本框架首先:創建MFC 對話框程序C語言C++交流群496926338C語言C++交流群496926338喜歡的話關注收藏評論轉發一波 比心么么噠!加入我們C語言C++學習交流 壹 496926338群內有大量的項目開發和新手教學視頻千人大群等著你來加入。No.1 為基本控制項添加變數去保存要發送的信息CString m_strF1;CString m_strF2;CString m_strF3;CString m_strF4;CString m_strF5;CString m_strF6;CString m_strF7;CString m_strF8;No.2 註冊熱鍵C語言C++交流群496926338//函數的使用:: 全局的函數--函數調用//註冊F1-F8熱鍵::RegisterHotKey(m_hWnd, 1001, NULL, VK_F1); //註冊熱鍵F1::RegisterHotKey(m_hWnd, 1002, NULL, VK_F2); //註冊熱鍵F1::RegisterHotKey(m_hWnd, 1003, NULL, VK_F3); //註冊熱鍵F1::RegisterHotKey(m_hWnd, 1004, NULL, VK_F4); //註冊熱鍵F1::RegisterHotKey(m_hWnd, 1005, NULL, VK_F5); //註冊熱鍵F1::RegisterHotKey(m_hWnd, 1006, NULL, VK_F6); //註冊熱鍵F1::RegisterHotKey(m_hWnd, 1007, NULL, VK_F7); //註冊熱鍵F1::RegisterHotKey(m_hWnd, 1008, NULL, VK_F8); //註冊熱鍵F1No.2 處理熱鍵,按鍵比較多,我就在這裡以F1為例C語言C++交流群496926338if (nHotKeyId == 1001) //F1 Id 是1001 註冊的時候的id{//如果編輯框沒有內容,沒有必要拷貝到剪切板if (m_strF1.IsEmpty)return;//把文字放到剪切板裡面去if (OpenClipboard) //打開剪切板 成功{//清空剪切板EmptyClipboard;//分配內存//char wchat_t// malloc// char * p=(char *)malloc(sizeof(char)*n)//不是從事演算法這塊/伺服器/遊戲TCHAR *buffer = (TCHAR *)GlobalAlloc(GMEM_DDESHARE, m_strF1.GetLength + 1);//綁定內存--讓指針指向分配內存的首地址buffer = (TCHAR *)GlobalLock(buffer);//複製到buffer ------- 字元串複製 strcpystrcpy(buffer, m_strF1.GetBuffer); //如果報錯,改為寬位元組編碼//這裡報錯了,要你使用_s 系列 _getch _kbhit scanf_s//解鎖綁定內存GlobalUnlock(buffer);//指定數據按照指定格式放到剪切板SetClipboardData(CF_TEXT, buffer); //CF_TEXT 代表數據樣式 :Edit數據//關閉剪切板CloseClipboard;}//模擬按鍵 ---keybd_event 模擬/*錄製視頻 +源碼+筆記不發軟妹幣*///按F1 實現Ctr+v的功能keybd_event(VK_CONTROL, 0, 0, 0); //按下ctrlkeybd_event(_T('V'), 0, 0, 0); //按下v鍵//釋放keybd_event(_T('V'), 0, KEYEVENTF_KEYUP, 0); //構造函數+析構函數的順序相反keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);return;}No.3 當你寫完的時候,你發現好像不能換行,這時候我們處理換行的問題//多行輸入 ------按下Enter 實現 \r\n注意是:處理按鍵是修改消息函數:PreTranslateMessage(MSG* pMsg)if ((WM_KEYFIRST <= pMsg->message) && (pMsg->message <= WM_KEYLAST)){//通用消息,和專用消息 : 高四位 低四位if (pMsg->wParam == VK_RETURN) //按鍵消息等於Enter{HWND hWnd = ::GetFocus; //獲取當前滑鼠所在窗口的句柄int iID = ::GetDlgCtrlID(hWnd); //獲取這個控制項 的IDif (iID == IDC_EDIT1) //判斷是否是第一個編輯{//在原來的數據前面加\r\n;CString sData;sData.Empty; //清空sDataint lenData = 0; //初始化長度GetDlgItemText(IDC_EDIT1, sData); //獲取編輯框中內容sData += "\r\n";SetDlgItemTextA(IDC_EDIT1, sData); //結果顯示在編輯框lenData = sData.GetLength;((CEdit*)GetDlgItem((IDC_EDIT1)))->SetSel(lenData, lenData);}}No.4 文件操作第一步:初始化的文件操作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;}第二步:修改內容后的操作,需要為控制項添加控制項事件void CMyCopyToolDlg::OnEnChangeEdit1{UpdateData(TRUE);CFile file;if (file.Open("1.txt", CFile::modeWrite | CFile::modeCreate)){file.Write(m_strF1, m_strF1.GetLength);file.Close;}}好了到這裡,一個完美的聊天助手已經誕生,要注意是上面都是以第一個編輯框為例,所以代碼你得重複8次哈哈。
寫了
5860316篇文章,獲得
23313次喜歡