tag 标签: vs2010

相关博文
  • 热度 17
    2016-4-25 17:19
    1415 次阅读|
    0 个评论
    参考网上的例子,是在VC6下运行的。 void ThreadFunc() {     CTime time;   CString strTime;     m_bRun=TRUE;   while(m_bRun)   {   time=CTime::GetCurrentTime();   strTime=time.Format("%H:%M:%S");   ::SetDlgItemText(AfxGetMainWnd()-m_hWnd,IDC_TIME,strTime);   Sleep(1000);   } } void CSingleThreadDlg::OnBnClickedStart() {   hThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadFunc,  NULL,0,ThreadID);   GetDlgItem(IDC_START)-EnableWindow(FALSE);   GetDlgItem(IDC_STOP)-EnableWindow(TRUE); } 编译时提示:SingleThread.exe 中的 0x00413437 处有未经处理的异常: 0xC0000005: 读取位置 0x00000020 时发生访问冲突。 查询MSDN了解到,CreateThread函数,第四个参数是传递到ThreadFunc函数的参数, 所以把程序修改为: void ThreadFunc(LPVOID p) {     CTime time;     CString strTime;     m_bRun = TRUE;     HWND hwnd = (HWND)p;     while (m_bRun)     {         time = CTime::GetCurrentTime();         strTime = time.Format("%H:%M:%S");                           SetDlgItemText(hwnd, IDC_TIME, strTime);  //涉及进程间通信,                                                                                      //把用户界面进程的句柄传递给工作线程         Sleep(1000);     } } void CMultiThread1Dlg::OnBnClickedStart() {     // TODO: 在此添加控件通知处理程序代码          hThread=CreateThread(NULL,         0,         (LPTHREAD_START_ROUTINE)ThreadFunc,         this-m_hWnd,               //这个参数是将要传递给ThreadFunc函数的参数,         0,         ThreadID);     this-GetDlgItem(IDC_START)-EnableWindow(FALSE);     this-GetDlgItem(IDC_STOP)-EnableWindow(TRUE);      } 程序正常运行!
  • 热度 21
    2016-4-13 20:26
    2232 次阅读|
    0 个评论
        在写基于对话框的程序,用到一个Button按钮,单击时,查询USB口接的设备,并在ComboBox控件里列出其描述符。 使用如下代码: str.Format(( "%s" ), BufPtrs );  // str为CString 变量 m_device_list.AddString(str);   // m_device_list为CComboBox 变量   编译提示错误:不能将参数 1 从“const char ”转换为“const wchar_t *。       查询资料得到结果:VS2010默认编码是Unicode,我将其改为多字节编码后,编译OK,运行也不出现乱码!但是,多字节编码已不推荐使用,应该是兼容性不好。 所以我将编码格式改为Unicode,看是否有其他方式可以解决? 代码修改为: str.Format(( _T("%s") , BufPtrs );  // str为CString 变量 m_device_list.AddString(str);   // m_device_list为CComboBox 变量   编译OK,但运行后,str内容为乱码,导致显示也是乱码!       后来,在网上找到一个说法:unicode环境下格式化ansi字符串要用 %S。 修改为: str.Format(( _T("%S") , BufPtrs );  // str为CString 变量 m_device_list.AddString(str);   // m_device_list为CComboBox 变量   编译OK,运行OK,无乱码!   最后说明:     1)Visual C++里边定义字符串的时候,用_T来保证兼容性,VC支持ascii和unicode两种字符类型,用_T可以保证从ascii编码类型转换到unicode编码类型的时候,程序不需要修改,它固定使用16 bits(两个字节)来表示一个字符。_T("")与L"",效果是一样的。 如: L"我的字符串" 表示将ANSI字符串转换成unicode的字符串,就是每个字符占用两个字节。strlen("asd") = 3; strlen(L"asd") = 6;     2)关于 %s 与 %S  https://msdn.microsoft.com/en-us/library/hf4y5e3w  
  • 热度 21
    2016-4-8 10:15
    913 次阅读|
    0 个评论
    1、 在VAssistX菜单栏-Visual Assist X Options-展开Advanced-Underlines-把underlines spelling errors in comments and strings using的勾去掉。 2、 工具-选项-展开“文本编辑器”-再展开“C/C++”-单击“高级”-然后禁用波形曲线,选择true。  
  • 热度 15
    2012-1-7 19:35
    4044 次阅读|
    0 个评论
            终于下定决心搞搞MFC,经朋友推荐找了一套孙鑫的视频还有教程。结果发现他用的是VC6,我装的是VS2010。无奈,只好在VS2010下重建工程,吧他的代码复制进来,运行,于是神奇的现象出现了。如下,一大堆的错误: 1  WinMain.cpp 1c:\users\cxg\documents\visual studio 2010\projects\winmain\winmain\winmain.cpp(26): error C2440: “=”: 无法从“const char ”转换为“LPCWSTR” 1          与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换 1c:\users\cxg\documents\visual studio 2010\projects\winmain\winmain\winmain.cpp(33): error C2664: “CreateWindowExW”: 不能将参数 2 从“const char ”转换为“LPCWSTR” 1          与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换 1c:\users\cxg\documents\visual studio 2010\projects\winmain\winmain\winmain.cpp(59): error C2664: “MessageBoxW”: 不能将参数 2 从“char ”转换为“LPCWSTR” 1          与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换 1c:\users\cxg\documents\visual studio 2010\projects\winmain\winmain\winmain.cpp(62): error C2664: “MessageBoxW”: 不能将参数 2 从“const char ”转换为“LPCWSTR” 1          与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换 1c:\users\cxg\documents\visual studio 2010\projects\winmain\winmain\winmain.cpp(65): error C2664: “TextOutW”: 不能将参数 4 从“const char ”转换为“LPCWSTR” 1          与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换 1c:\users\cxg\documents\visual studio 2010\projects\winmain\winmain\winmain.cpp(72): error C2664: “TextOutW”: 不能将参数 4 从“const char ”转换为“LPCWSTR” 1          与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换 1c:\users\cxg\documents\visual studio 2010\projects\winmain\winmain\winmain.cpp(76): error C2664: “MessageBoxW”: 不能将参数 2 从“const char ”转换为“LPCWSTR” 1          与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换 1 1生成失败。         关键是最后一句:生成失败!!!         怎么办,改呗。类型转换,咱也不是很懂,强制转换吧。全部加上(LPCWSTR),完成任务后,编译,成功了,我成功了!!运行,我考怎么都是乱码,韩语!!         到网上找了一通,大家讲的也都看不懂,仿佛看到两位大侠讲什么Unicode什么的,唉,不懂啊。。打开VS2010 乱找一通,不小心发现了下面一个选项: 项目--WinMain属性,这里的WinMain是项目名称 点进去发现一项:配置属性--常规--项目默认值--字符集 默认配置为“使用Unicode字符集”,改为“使用多字节字符集”。 编译,运行,OK。
  • 热度 24
    2012-1-5 09:44
    5622 次阅读|
    10 个评论
     
相关资源