ON_WM_SYS发送 wm command 消息()是干什么用的?

菜鸟求助,vs2010写的串口调试,接收框只能接收英文,不显示汉字【mfc吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:13,826贴子:
菜鸟求助,vs2010写的串口调试,接收框只能接收英文,不显示汉字收藏
菜鸟求助,vs2010写的串口调试,接收框只能接收英文,不显示汉字,现在附部分程序,求大神帮助。// SCommTestDlg.cpp : 实现文件//#include "stdafx.h"#include "SCommTest.h"#include "SCommTestDlg.h"#include "afxdialogex.h"#ifdef _DEBUG#define new DEBUG_NEW#endif// 用于应用程序“关于”菜单项的 CAboutDlg 对话框class CAboutDlg : public CDialogEx{public:CAboutDlg();// 对话框数据enum { IDD = IDD_ABOUTBOX };protected:virtual void DoDataExchange(CDataExchange* pDX);
// DDX/DDV 支持// 实现protected:DECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD){}void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialogEx::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)END_MESSAGE_MAP()// CSCommTestDlg 对话框CSCommTestDlg::CSCommTestDlg(CWnd* pParent /*=NULL*/): CDialogEx(CSCommTestDlg::IDD, pParent), m_strEditRXData(_T("")), m_strEditTXData(_T("")){m_hIcon = AfxGetApp()-&LoadIcon(IDR_MAINFRAME);}void CSCommTestDlg::DoDataExchange(CDataExchange* pDX){CDialogEx::DoDataExchange(pDX);DDX_Text(pDX, IDC_EDIT_RXDATA, m_strEditRXData);DDX_Text(pDX, IDC_EDIT_EDIT_TXDATA, m_strEditTXData);DDX_Control(pDX, IDC_MSCOMM1, m_ctrlComm);}BEGIN_MESSAGE_MAP(CSCommTestDlg, CDialogEx)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON_MANUALSEND, &CSCommTestDlg::OnBnClickedButtonManualsend)END_MESSAGE_MAP()// CSCommTestDlg 消息处理程序BOOL CSCommTestDlg::OnInitDialog(){CDialogEx::OnInitDialog();// 将“关于...”菜单项添加到系统菜单中。// IDM_ABOUTBOX 必须在系统命令范围内。ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX & 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){BOOL bNameVCString strAboutMbNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);ASSERT(bNameValid);if (!strAboutMenu.IsEmpty()){pSysMenu-&AppendMenu(MF_SEPARATOR);pSysMenu-&AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动//
执行此操作SetIcon(m_hIcon, TRUE); // 设置大图标SetIcon(m_hIcon, FALSE); // 设置小图标// TODO: 在此添加额外的初始化代码m_ctrlComm.put_CommPort(5);
//选择COM5m_ctrlComm.put_InputMode(1); //输入方式为二进制方式m_ctrlComm.put_InBufferSize(1024); //设置输入缓冲区大小m_ctrlComm.put_OutBufferSize(512); //设置输出缓冲区大小m_ctrlComm.put_Settings(_T("9600,n,8,1")); //波特率9600,无校验,8个数据位,1个停止位 if(!m_ctrlComm.get_PortOpen())m_ctrlComm.put_PortOpen(TRUE);//打开串口//参数1表示每当串口接收缓冲区中有多于//或等于1个字符时将引发一个接收数据的OnComm事件m_ctrlComm.put_RThreshold(1); m_ctrlComm.put_InputLen(0);
//设置当前接收区数据长度为0m_ctrlComm.get_Input(); //先预读缓冲区以清除残留数据return TRUE;
// 除非将焦点设置到控件,否则返回 TRUE}void CSCommTestDlg::OnSysCommand(UINT nID, LPARAM lParam){if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAdlgAbout.DoModal();}else{CDialogEx::OnSysCommand(nID, lParam);}}// 如果向对话框添加最小化按钮,则需要下面的代码//
来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,//
这将由框架自动完成。void CSCommTestDlg::OnPaint(){if (IsIconic()){CPaintDC dc(this); // 用于绘制的设备上下文SendMessage(WM_ICONERASEBKGND, reinterpret_cast&WPARAM&(dc.GetSafeHdc()), 0);// 使图标在工作区矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRGetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// 绘制图标dc.DrawIcon(x, y, m_hIcon);}else{CDialogEx::OnPaint();}}//当用户拖动最小化窗口时系统调用此函数取得光标//显示。HCURSOR CSCommTestDlg::OnQueryDragIcon(){return static_cast&HCURSOR&(m_hIcon);}BEGIN_EVENTSINK_MAP(CSCommTestDlg, CDialogEx)ON_EVENT(CSCommTestDlg, IDC_MSCOMM1, 1, CSCommTestDlg::OnComm, VTS_NONE)END_EVENTSINK_MAP()void CSCommTestDlg::OnComm(){// TODO: 在此处添加消息处理程序代码VARIANT variant_COleSafeArray safearray_LONG len,k;BYTE rxdata[2048]; //设置BYTE数组CSif(m_ctrlComm.get_CommEvent()==2) //事件值为2表示接收缓冲区内有字符{variant_inp=m_ctrlComm.get_Input(); //读缓冲区safearray_inp=variant_
//VARIANT型变量转换为ColeSafeArray型变量len=safearray_inp.GetOneDimSize(); //得到有效数据长度for(k=0;k&k++)safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组for(k=0;k&k++)
//将数组转换为Cstring型变量{BYTE bt=*(char*)(rxdata+k);
//字符型strtemp.Format(_T("%c"),bt);
//将字符送入临时变量strtemp存放m_strEditRXData+=
//加入接收编辑框对应字符串
}}UpdateData(FALSE);
//更新编辑框内容}void CSCommTestDlg::OnBnClickedButtonManualsend(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE); //读取编辑框内容m_ctrlComm.put_Output(COleVariant(m_strEditTXData));//发送数据}
2017带你腾飞,欢迎各团队领导人对接!咨询电话及微信:2017带你腾飞,感兴趣的话快来咨询吧.
8位数据位 发的是7位ASCII码,汉字要GB2312。你那数据位上了电缆线就是个高低电平,到另一端都是些,组合按ASCII,肯定是字母了吧
看看这个估计你就悟了
你好 请问你是怎么解决的呢 我按照2楼的方法修改并没有效果 我现在也有同样的问题 请教啦
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或ON_COMMAND_RANGE多个按钮响应一个函数的解决方法
开发人员需要注意在自定义消息响应函数的声明过程中,一定要注意参数的形式,稍微一疏忽就会导致莫须有的错误,具体以ON_COMMAND_RANGE为例说下。 1.声明消息响应函数:在要添加的工程上添加函数afx_msg void OnButtonPort(); 2.消息映射: BEGIN_MESSAGE_
开发人员需要注意在自定义消息响应函数的声明过程中,一定要注意参数的形式,稍微一疏忽就会导致莫须有的错误,具体以ON_COMMAND_RANGE为例说下。
1.声明消息响应函数:在要添加的工程上添加函数afx_msg void OnButtonPort();
2.消息映射:
BEGIN_MESSAGE_MAP(CXXXDlg, CDialog)
//{{AFX_MSG_MAP(CXXXDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_TIMER()
//}}AFX_MSG_MAP
//这里的IDC_BUTTON_PORT_1和 IDC_BUTTON_START_ALL之间有很多个Button,并且ID连续
ON_COMMAND_RANGE(IDC_BUTTON_PORT_1, IDC_BUTTON_START_ALL, OnButtonPort)
ON_WM_DEVICECHANGE()
END_MESSAGE_MAP()
(责任编辑:admin)
------分隔线----------------------------
各位朋友,下面的相关文章可能对您很有帮助!
虚拟机会有一些莫名其妙的问题,好在可以在Windows7正常系统中验证问题的范围,外围正...
如果宇宙卡组在一场游戏中使用了全部宇宙橙,就可能爆发出超越普通卡组的强度,下面来...
确定了远程设备的地址并选择了用于连接的端口后,应用程序可以尝试建立与远程设备的连...
作为第一课,只是给大家一个简单的认识,东西不是太多。主要有以下三个方面: 1、在页...
本教程是向脚本之家的朋友介绍利用Fireworks制作一对晶莹剔透效果的翅膀过程,教程制...
今天根据工信部设备认证中心最新公布的信息显示,小米尚未发布的一款新机2015561已经...

我要回帖

更多关于 python sys command 的文章

 

随机推荐