编程环境配置完成后,就可以开始写界面。
1.首先打开解决方案资源管理器界面(视图->解决方案资源管理器)和资源视图界面(视图->资源视图).分别在头文件和源文件中添加myRuntime.h文件和myRuntime.cpp文件。
2.点击资源视图,在窗口中添加控件,如下图
![](http://a2.qpic.cn/psb?/V135QPDB2w0C70/W7AJvpIo0OtCS.yz2tMBD7MR2KTtgnxUFuIYJyQjork!/b/dF0BAAAAAAAA&ek=1&kp=1&pt=0&bo=QAKiAQAAAAAFB8U!&sce=0-12-12&rf=viewer_4)
分别双击各个按钮,添加事件处理程序,代码如下:
1 #include "stdafx.h" 2 #include "pmac1.h" 3 #include "pmac1Dlg.h" 4 #include "afxdialogex.h" 5 #include "myRuntime.h" 6 7 void Cpmac1Dlg::OnBnClickedButton3() 8 { 9 // TODO: 在此添加控件通知处理程序代码 10 if (NULL != OpenRuntimeLink()) 11 { 12 AfxMessageBox(TEXT("加载动态链接库成功!")); 13 } 14 else 15 { 16 AfxMessageBox(TEXT("加载动态链接库失败!")); 17 return; 18 } 19 20 //打开指定卡号PMAC,这里打开0号卡 21 if (TRUE == OpenPmacDevice(0)) 22 { 23 AfxMessageBox(TEXT("PMAC连接成功!")); 24 } 25 else 26 { 27 AfxMessageBox(TEXT("PMAC连接失败!")); 28 } 29 ClosePmacDevice(0); 30 31 //FreeLibrary 32 CloseRuntimeLink(); 33 } 34 void Cpmac1Dlg::OnBnClickedButton2() 35 { 36 // TODO: 在此添加控件通知处理程序代码 37 OpenRuntimeLink(); 38 OpenPmacDevice(0); 39 40 TCHAR res[MAX_PATH]; 41 TCHAR cmd[MAX_PATH]; 42 43 44 //将要发送的指令存入cmd数组 45 lstrcpy(cmd, "i100=1"); 46 //i100=1即为激活电机#1指令 47 //GetDlgItemText(IDE_COMMAND, szCmd, MAX_PATH); 48 49 //发送指令和接受往回发的指令填充到szRes 50 PmacGetResponse(0,res,MAX_PATH,cmd); 51 52 //显示接受指令 53 //SetDlgItemText(IDE_RECEIVE, szRes); 54 ClosePmacDevice(0); 55 56 //FreeLibrary 57 CloseRuntimeLink(); 58 } 59 void Cpmac1Dlg::OnBnClickedButton6() 60 { 61 62 OpenRuntimeLink(); 63 OpenPmacDevice(0); 64 // TODO: 在此添加控件通知处理程序代码 65 TCHAR res[MAX_PATH]; 66 TCHAR cmd[MAX_PATH]; 67 68 //将要发送的指令存入cmd数组 69 lstrcpy(cmd, "#1j/"); 70 //i100=1即为激活电机#1指令 71 //GetDlgItemText(IDE_COMMAND, szCmd, MAX_PATH); 72 73 //发送指令和接受往回发的指令填充到szRes 74 PmacGetResponse(0,res,MAX_PATH,cmd); 75 76 //显示接受指令 77 //SetDlgItemText(IDE_RECEIVE, szRes); 78 ClosePmacDevice(0); 79 80 //FreeLibrary 81 CloseRuntimeLink(); 82 } 83 void Cpmac1Dlg::OnBnClickedButton4() 84 { 85 OpenRuntimeLink(); 86 OpenPmacDevice(0); 87 // TODO: 在此添加控件通知处理程序代码 88 // TODO: 在此添加控件通知处理程序代码 89 TCHAR res[MAX_PATH]; 90 TCHAR cmd[MAX_PATH]; 91 92 //将要发送的指令存入cmd数组 93 lstrcpy(cmd, "#1J+"); 94 //i100=1即为激活电机#1指令 95 //GetDlgItemText(IDE_COMMAND, szCmd, MAX_PATH); 96 97 //发送指令和接受往回发的指令填充到szRes 98 PmacGetResponse(0,res,MAX_PATH,cmd); 99 100 //显示接受指令 101 //SetDlgItemText(IDE_RECEIVE, szRes); 102 ClosePmacDevice(0); 103 104 //FreeLibrary 105 CloseRuntimeLink(); 106 } 107 void Cpmac1Dlg::OnBnClickedButton5() 108 { 109 OpenRuntimeLink(); 110 OpenPmacDevice(0); 111 // TODO: 在此添加控件通知处理程序代码 112 // TODO: 在此添加控件通知处理程序代码 113 TCHAR res[MAX_PATH]; 114 TCHAR cmd[MAX_PATH]; 115 116 //将要发送的指令存入cmd数组 117 lstrcpy(cmd, "#1J-"); 118 //i100=1即为激活电机#1指令 119 //GetDlgItemText(IDE_COMMAND, szCmd, MAX_PATH); 120 121 //发送指令和接受往回发的指令填充到szRes 122 PmacGetResponse(0,res,MAX_PATH,cmd); 123 124 //显示接受指令 125 //SetDlgItemText(IDE_RECEIVE, szRes); 126 ClosePmacDevice(0); 127 128 //FreeLibrary 129 CloseRuntimeLink(); 130 } 131 void Cpmac1Dlg::OnBnClickedButton7() 132 { 133 OpenRuntimeLink(); 134 OpenPmacDevice(0); 135 // TODO: 在此添加控件通知处理程序代码 136 // TODO: 在此添加控件通知处理程序代码 137 TCHAR res[MAX_PATH]; 138 TCHAR cmd[MAX_PATH]; 139 140 //将要发送的指令存入cmd数组 141 lstrcpy(cmd, "k"); 142 //i100=1即为激活电机#1指令 143 //GetDlgItemText(IDE_COMMAND, szCmd, MAX_PATH); 144 145 //发送指令和接受往回发的指令填充到szRes 146 PmacGetResponse(0,res,MAX_PATH,cmd); 147 148 //显示接受指令 149 //SetDlgItemText(IDE_RECEIVE, szRes); 150 ClosePmacDevice(0); 151 152 //FreeLibrary 153 CloseRuntimeLink(); 154 }
代码亲测可用。
3.可能出现的问题
a.error C2664
pmac1Dlg.cpp(224): error C2664: “lstrcpyW”: 不能将参数 2 从“const char [7]”转换为“LPCWSTR”与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换。
错误处理:
点击项目->属性->配置属性->常规->字符集
将字符集由“使用 Unicode 字符集”改为“使用多字节字符集”
b.修改界面显示风格
在stdafx.h文件最后添加代码
//#ifdef _UNICODE #if defined _M_IX86 #pragma comment(linker,"/manifestdependency:"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'"") #elif defined _M_X64 #pragma comment(linker,"/manifestdependency:"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'"") #else #pragma comment(linker,"/manifestdependency:"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'"") #endif //#endif
可以将界面从经典风格改为xp风格,显示效果如下:
xp风格
经典风格