#include<windows.h>
#include<stdio.h>LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
   LPSTR lpCmdLine,int nCmdShow)
{
static TCHAR szAppName[]=TEXT("HelloWorld");
static TCHAR szClassName[]=TEXT("HelloWorldClass");
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = szClassName;

if(!RegisterClass(&wndclass))
{
MessageBox(NULL,TEXT("This program requires Windows NT !"),
szAppName,MB_ICONERROR);
return 0;
} hwnd = CreateWindow(szClassName,
TEXT("My Input Program"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL );
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd); while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,
 LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
char temp[128];

switch(message)
{
case WM_CREATE:

return 0; //获取键盘输入
case WM_KEYDOWN:
switch(wParam)
{
//按Esc键推出
case VK_ESCAPE:
PostQuitMessage(0);
return 0;
}
//其余按键发声
MessageBeep(MB_OK);
return 0; //按下鼠标左键发声
case WM_LBUTTONDOWN:
MessageBeep(MB_OK);
return 0; //按下鼠标右键退出
case WM_RBUTTONDOWN:
PostQuitMessage(0);
return 0; //鼠标位置改变,显示坐标
case WM_MOUSEMOVE:
hdc = GetDC(hwnd);
sprintf(temp,"x: %d , y: %d",LOWORD(lParam),HIWORD(lParam));
TextOut(hdc,10,10,temp,strlen(temp));
ReleaseDC(hwnd,hdc);
return 0; case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
GetClientRect(hwnd,&rect);
EndPaint(hwnd,&ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
} return DefWindowProc(hwnd,message,wParam,lParam);
}
现在假串口收到了一个信息,那么应该是
case 什么 呢?谢谢!

解决方案 »

  1.   

    串口没有消息的定义,你要创件事件,如下所示:
    HANDLE hCom;
    OVERLAPPED o;
    BOOL fSuccess;
    DWORD dwEvtMask;hCom = CreateFile( "COM1",
        GENERIC_READ | GENERIC_WRITE,
        0,    // exclusive access 
        NULL, // no security attributes 
        OPEN_EXISTING,
        FILE_FLAG_OVERLAPPED,
        NULL
        );if (hCom == INVALID_HANDLE_VALUE) 
    {
        // Handle the error. 
    }// Set the event mask. fSuccess = SetCommMask(hCom, EV_CTS | EV_DSR);if (!fSuccess) 
    {
        // Handle the error. 
    }// Create an event object for use in WaitCommEvent. o.hEvent = CreateEvent(
        NULL,   // no security attributes 
        FALSE,  // auto reset event 
        FALSE,  // not signaled 
        NULL    // no name 
        );assert(o.hEvent);if (WaitCommEvent(hCom, &dwEvtMask, &o)) 
    {
        if (dwEvtMask & EV_DSR) 
        {
             // To do.
        }    if (dwEvtMask & EV_CTS) 
        {
             // To do. 
        }
    }
      

  2.   

    大哥:
    是不是写到
    int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
       LPSTR lpCmdLine,int nCmdShow)
    {
            //*****************************是不是写到这里********************//
              HANDLE hCom;
              OVERLAPPED o;
              BOOL fSuccess;
              DWORD dwEvtMask;          hCom = CreateFile( "COM1",
              GENERIC_READ | GENERIC_WRITE,
              0,    // exclusive access 
              NULL, // no security attributes 
              OPEN_EXISTING,
              FILE_FLAG_OVERLAPPED,
              NULL
             );       if (hCom == INVALID_HANDLE_VALUE) 
              {
               // Handle the error. 
                }       // Set the event mask.        fSuccess = SetCommMask(hCom, EV_CTS | EV_DSR);       if (!fSuccess) 
              {
                 // Handle the error. 
               }        // Create an event object for use in WaitCommEvent.         o.hEvent = CreateEvent(
            NULL,   // no security attributes 
            FALSE,  // auto reset event 
            FALSE,  // not signaled 
            NULL    // no name 
           );    assert(o.hEvent);    if (WaitCommEvent(hCom, &dwEvtMask, &o)) 
           {
             if (dwEvtMask & EV_DSR) 
              {
             // To do.
              }        if (dwEvtMask & EV_CTS) 
             {
             // To do. 
            }
         }   //***********************是不是写到这里**************************** static TCHAR szAppName[]=TEXT("HelloWorld");
    static TCHAR szClassName[]=TEXT("HelloWorldClass");
    HWND hwnd;
    MSG msg;
    WNDCLASS wndclass;
    wndclass.style = CS_HREDRAW | CS_VREDRAW;
    }
    谢谢!