// wy.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { cin.ignore(2); //ignore()函数用来忽略读取的字节 char c = cin.get();//get()用来读取一个字符 cout<<c<<endl; cout.put('c');//put()函数用来输出一个字符,其职能处理字符,不能处理字符串 cout.flush();//强制刷新缓冲区 return 0; } /* 为什么二进制问价比文本文件占用的空间少? 答:因为在文本文件中,数字是以字符的形式存储的,例如数字132存储为字符串"132",使用3个字节 而在二进制文件中,数字是以二进制的形式存储的,仅使用一个字节。 使用fstream流家族中的write和read方法时,为什么需要转换类型成char型? 因为在C++中,char型是最小的变量类型(使用一个字节)。C++使用char型,可以保证读写字节数目的正确。 */
1、这样为mfc中CStatic空间添加变量? 因为CStatic空间的ID默认为IDC_STATIC,我们可以将其ID更改为自定义的,例如IDC_STATIC_WY,这样就可以用类向导为该控件添加变量如,m_static. 2、这样要对话框中的控件大小随着对话框的最大化最小化来改变? 重载对话框的OnSize()函数,然后再该函数内部进行设置对话框内部控件的位置,如下: if (nType == SIZE_MAXIMIZED) { //IDC_STATIC_WY为第1步中我们定义的CStatic空间的ID GetDlgItem(IDC_STATIC_WY)->SetWindowPos(this, 0, 0, cx, 24, SWP_NOZORDER); } 3、CListCtrl 使用技巧的使用技巧 可以参看网页http://blog.csdn.net/lixiaosan/archive/2006/04/07/653563.aspx 很详细的http://www.codeproject.com/KB/list/listctrldemo.aspx 4、MFC中CFileFind类执行本地文件查找,详细使用参考下列网址 http://blog.chinaunix.net/u/27227/showart.php?id=479148 5、函数CreateDirectory是用来创建目录的 http://blog.csdn.net/phinecos/archive/2008/06/19/4612154.aspx 6、dll的导入与导出 当然有区别,__declspec(dllexport)用于导出符号,也就是定义该函数的dll;__declspec(dllimport)用于导入,也就是使用该函数。 因为这个头文件既要被定义该函数的dll包含,也要被使用该函数的程序包含,当被前者包含时我们希望使用__declspec(dllexport)定义函数,当被后者包含时我们希望使用dllimport。于是我们使用 #ifdef _EXPORTING #define CLASS_DECLSPEC __declspec(dllexport) #else #define CLASS_DECLSPEC __declspec(dllimport) #endif 这种技巧,在定义该函数的dll中,其编译选项定义了_EXPORTING而使用该函数的程序则没有定义。 7、将对话框设置为全屏 在对话框类的OnInitDialog()函数中添加如下代码: UINT width = GetSystemMetrics(SM_CXSCREEN); UINT height = GetSystemMetrics(SM_CYSCREEN); SetWindowPos(NULL, 0, 0, width, height, SWP_NOZORDER); 8、释放指针的一些宏 #define SAFE_DELETE(p) {if(p){ delete (p); (p) = NULL; }} #define SAFE_DELETEARRAY(p) {if(p){ delete[] (p); (p) = NULL; }} #define SAFE_RELEASE_PTR(p) {if(p){ (p).Release(); (p) = NULL; }} #define SAFE_DELETE_WINDOW(p) {if(p){ (p)->DestroyWindow(); delete (p); (p) = NULL; }} 9、C++中的LPVOID类型 LPVOID是一个没有类型的指针,也就是说你可以将任意类型的指针赋值给LPVOID类型的变量(一般作为参数传递),然后在使用的时候在转换回来。 例如: class CMyClass { void Start(); static UINT StartThread(LPVOID lParam); }; void CMyClass::Start() { AfxBeginThread(StartThread, this); } UINT CMyClass::StartThread(LPVOID lParam) { CMyClass * pMyClass = (CMyClass*)lParam; ... return 0; } 10、LocalAlloc,VirtualAlloc,malloc,new的异同 http://blog.csdn.net/Beyond_cn/archive/2010/05/31/5636886.aspx 11、C语言中函数strcpy ,strncpy ,strlcpy,strcpy_s的用法 http://dev.firnow.com/course/3_program/c/c_js/20100628/212238.html 12、VC中CALLBACK关键字 CALLBACK Calling convention for callback functions. This type is declared in WinDef.h as follows: #define CALLBACK __stdcall 13、AfxGetAppName()获取应用程序的名字。 (1)、PreTranslateMessage(MSG* pMsg)函数来截获消息,通过对消息的分析进行处理 BOOL CMainFrame::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class if(WM_CHAR == pMsg->message) { if (VK_RETURN == pMsg->wParam) { AfxMessageBox("回车"); } else { CString str; char m_c = static_cast<char>(pMsg->wParam); if (isupper(m_c)) { str.Format("大写字母:%c", m_c); AfxMessageBox(str); } else if (islower(m_c)) { str.Format("小写字母:%c", m_c); AfxMessageBox(str); } } } (2)、SendMessage()用来发送消息