📄 commdsp.cpp
字号:
// WriteABuffer("1AB0", 4);
//sprintf(OutSSadd,"Isha %d\n", 1);
//strcat(OutSS,OutSSadd);
//mbstowcs(LOutSS, OutSS,400);
//MessageBox( hWnd, LOutSS, _T("SalatTime"), MB_OK);
//OutputDebugString ( LOutSS);
break;
case IDM_EXIT:
if (hComm) CloseHandle( hComm);
SendMessage (hWnd, WM_CLOSE, 0, 0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_CREATE:
SHMENUBARINFO mbi;
memset(&mbi, 0, sizeof(SHMENUBARINFO));
mbi.cbSize = sizeof(SHMENUBARINFO);
mbi.hwndParent = hWnd;
mbi.nToolBarId = IDR_MENU;
mbi.hInstRes = g_hInst;
if (!SHCreateMenuBar(&mbi))
{
g_hWndMenuBar = NULL;
}
else
{
g_hWndMenuBar = mbi.hwndMB;
}
// Initialize the shell activate info structure
memset(&s_sai, 0, sizeof (s_sai));
s_sai.cbSize = sizeof (s_sai);
// ivalide tte connection future !
Connected=false;
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
DrawText(hdc, PrincipaleSS, -1, &rc, DT_CALCRECT | DT_LEFT | DT_TOP);
DrawText(hdc, PrincipaleSS, -1, &rc, DT_LEFT | DT_TOP);
// TODO: Add any drawing code here...
//PAINTSTRUCT ps;
//HPEN hpen, hpOld;
//POINT ptTriangle[3];
//ptTriangle[0].x = 20;
//ptTriangle[0].y = 20;
//ptTriangle[1].x = 20;
//ptTriangle[1].y = 170;
//ptTriangle[2].x = 170;
//ptTriangle[2].y = 95;
//hpen = CreatePen( PS_SOLID, 2, 0);
//hpOld=(HPEN)SelectObject( hdc,hpen);
//if(VilleSelected == 0) Rectangle(hdc, 20, 20, 170, 170);
//if(VilleSelected == 1) Ellipse(hdc, 20, 20, 170, 170);
//if(VilleSelected == 2) Polygon(hdc, ptTriangle, 3);
//SelectObject(hdc,hpOld);
//DeleteObject(hpen);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
CommandBar_Destroy(g_hWndMenuBar);
PostQuitMessage(0);
break;
case WM_ACTIVATE:
// Notify shell of our activate message
SHHandleWMActivate(hWnd, wParam, lParam, &s_sai, FALSE);
break;
case WM_SETTINGCHANGE:
SHHandleWMSettingChange(hWnd, wParam, lParam, &s_sai);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
//-------------------------------------------------------------------------
// Message handler for about box.
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
{
// Create a Done button and size it.
SHINITDLGINFO shidi;
shidi.dwMask = SHIDIM_FLAGS;
shidi.dwFlags = SHIDIF_DONEBUTTON | SHIDIF_SIPDOWN | SHIDIF_SIZEDLGFULLSCREEN | SHIDIF_EMPTYMENU;
shidi.hDlg = hDlg;
SHInitDialog(&shidi);
}
return (INT_PTR)TRUE;
case WM_COMMAND:
if (LOWORD(wParam) == IDOK)
{
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
}
break;
case WM_CLOSE:
EndDialog(hDlg, message);
return TRUE;
//#ifdef _DEVICE_RESOLUTION_AWARE
// case WM_SIZE:
// {
// DRA::RelayoutDialog( g_hInst, hDlg, MAKEINTRESOURCE(IDD_ABOUTBOX));
// }
// break;
//#endif
}
return (INT_PTR)FALSE;
}
//-------------------------------------------------------------------------
// Message handler for about box.
INT_PTR CALLBACK Config(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
char OutSS[120];
wchar_t LOutSS[120];
switch (message)
{
case WM_INITDIALOG:
{
// Create a Done button and size it.
SHINITDLGINFO shidi;
shidi.dwMask = SHIDIM_FLAGS;
shidi.dwFlags = SHIDIF_DONEBUTTON | SHIDIF_SIPDOWN | SHIDIF_SIZEDLGFULLSCREEN | SHIDIF_EMPTYMENU;
shidi.hDlg = hDlg;
SHInitDialog(&shidi);
}
return (INT_PTR)TRUE;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDOK :
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
break;
}
break;
case WM_CLOSE:
EndDialog(hDlg, message);
return TRUE;
}
return (INT_PTR)FALSE;
}
//-------------------------------------------------------------------------
// Message handler for PiloteReferences dialog box.
INT_PTR CALLBACK PiloteReferences(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
BOOL NoErr;
__int8 code;
double data;
char OutSS[120];
wchar_t LOutSS[120];
switch (message)
{
case WM_INITDIALOG:
{
// Create a Done button and size it.
SHINITDLGINFO shidi;
shidi.dwMask = SHIDIM_FLAGS;
shidi.dwFlags = SHIDIF_DONEBUTTON | SHIDIF_SIPDOWN | SHIDIF_SIZEDLGFULLSCREEN | SHIDIF_EMPTYMENU;
shidi.hDlg = hDlg;
SHInitDialog(&shidi);
VitessePositionFlag=1;
SendDlgItemMessage(hDlg, IDC_RBVitesse, BM_SETCHECK, VitessePositionFlag, 0);
SendDlgItemMessage(hDlg, IDC_RDPosition, BM_SETCHECK, !VitessePositionFlag, 0);
// slider : trackbar
SendDlgItemMessage(hDlg, IDC_SBReference, TBM_SETRANGE, TRUE, MAKELONG(-2400, 2400));
SendDlgItemMessage(hDlg, IDC_SBReference, TBM_SETPOS, TRUE, 0);
SetDlgItemInt(hDlg, IDC_EDITData, 0, TRUE);
}
return (INT_PTR)TRUE;
case WM_HSCROLL:
data=SendDlgItemMessage(hDlg, IDC_SBReference, TBM_GETPOS, 0, 0)/4.0;
SetDlgItemInt(hDlg, IDC_EDITData, data, TRUE);
if (VitessePositionFlag) code=ID_ModeControleVitesse;
else code=ID_ModeControlePosition;
EnvoieSemiWord(hDlg, code, data);
return TRUE;
case WM_COMMAND:
switch (LOWORD(wParam))
{
// case TB_THUMBTRACK:
// data=SendMessage(hDlg, TBM_GETPOS, 0, 0)/4.0;
// SetDlgItemInt(hDlg, IDC_EDITData, data, TRUE);
// if (VitessePositionFlag) code=ID_ModeControleVitesse;
// else code=ID_ModeControlePosition;
// EnvoieSemiWord(hDlg, code, data);
return TRUE;
case IDC_BUTTONReset :
data=0;
SendDlgItemMessage(hDlg, IDC_SBReference, TBM_SETPOS, TRUE, data);
SetDlgItemInt(hDlg, IDC_EDITData, data, TRUE);
if (VitessePositionFlag) code=ID_ModeControleVitesse;
else code=ID_ModeControlePosition;
EnvoieSemiWord(hDlg, code, data);
//sprintf(OutSS, "Button reset");
//mbstowcs(LOutSS, OutSS, 120);
//MessageBox( hDlg, LOutSS, _T("Send dlg"), MB_OK);
return TRUE;
case IDC_RBVitesse :
VitessePositionFlag=true;
if (VitessePositionFlag) data=0;
else data=1;
EnvoieSemiWord(hDlg, ID_ModeControle, data);
return TRUE;
case IDC_RDPosition :
VitessePositionFlag=false;
if (VitessePositionFlag) data=0;
else data=1;
EnvoieSemiWord(hDlg, ID_ModeControle, data);
return TRUE;
case IDC_BUTTONSend :
data=GetDlgItemInt(hDlg, IDC_EDITData, &NoErr, TRUE);
if (NoErr){
SendDlgItemMessage(hDlg, IDC_SBReference, TBM_SETPOS, TRUE, data*4);
if (VitessePositionFlag) code=ID_ModeControleVitesse;
else code=ID_ModeControlePosition;
EnvoieSemiWord(hDlg, code, data);
}
return TRUE;
case IDOK :
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
}
break;
case WM_CLOSE:
EndDialog(hDlg, message);
return TRUE;
}
return (INT_PTR)FALSE;
}
//---------------------------------------------------------------------------
void EnvoieSemiWord(HWND hDlg, __int8 code, double data)
{
char OutSS[120];
wchar_t LOutSS[120];
char Out[4];
int WrittenCount;
__int16 idata; // donn閑 sur 16 bits sign閟 dont 14 sont significatifs et 2 de controle =0
idata=data*4;
Out[0]=code;
Out[1]=idata & 0x7F; // sur 7 bits seulement
Out[2]=(idata>>7) & 0x7F;
Out[4]=0;
// pas besoin du dummy char car le PPC aura int sur 1 byte re鐄 --- Out[3]=13;
if (Connected)
{
WrittenCount=WriteABuffer( Out, 3);
if (!WrittenCount)
MessageBox( hDlg, _T("3 bytes non ecrits !"), _T("Erreur"), MB_OK |MB_ICONSTOP);
sprintf(OutSS, "%03d: 0x%2x : c%c",UINT8(Out[0]), UINT8(Out[0]), Out[0]);
mbstowcs(LOutSS, OutSS, 120);
SetDlgItemText(hDlg, IDC_LabelCode, LOutSS);
sprintf(OutSS, "%03d: 0x%2x : c%c",UINT8(Out[1]), UINT8(Out[1]), Out[1]);
mbstowcs(LOutSS, OutSS, 120);
SetDlgItemText(hDlg, IDC_LabelLow, LOutSS);
sprintf(OutSS, "%03d: 0x%2x : c%c",UINT8(Out[2]), UINT8(Out[2]), Out[2]);
mbstowcs(LOutSS, OutSS, 120);
SetDlgItemText(hDlg, IDC_LabelHi, LOutSS);
}
else {
MessageBox( hDlg, _T("Port Com non ouvert"), _T("Erreur"), MB_OK |MB_ICONSTOP);
sprintf(OutSS, "none");
mbstowcs(LOutSS, OutSS, 120);
SetDlgItemText(hDlg, IDC_LabelCode, LOutSS);
sprintf(OutSS, "%03d: 0x%x : c%c",UINT8(Out[1]), UINT8(Out[1]), Out[2]);
SetDlgItemText(hDlg, IDC_LabelLow, LOutSS);
SetDlgItemText(hDlg, IDC_LabelHi, LOutSS);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -