程序代码:
#include<windows.h>
#include<stdlib.h>
#include<windows.h>
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG iParam);
RECT rect;
long cxChar,cyChar;
//----------------------主函数------------------------------------------------------------
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
MSG Message;
static char szAppName[]="KMessage";
HWND hWnd;
WNDCLASS WndClass;
if(!hPrevInstance)
{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.lpszClassName=szAppName;//
WndClass.lpszMenuName=NULL;//
return RegisterClass(&WndClass);
}
hWnd=CreateWindow("WinFill","填充示例程序",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,0,
CW_USEDEFAULT,0,
NULL,NULL,
hInstance,NULL);
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
while(GetMessage(&Message,0,0,0))
{
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return Message.wParam;
}
//----------------------ShowKey()函数实现----------------------------
void ShowKey(HWND hWnd,int iType,char *szMessage,UINT wParam,LONG lParam)
{
static char *szFormat[2]={"%-14s %3d %c %6u %4d %3s %3s %4s",
"%-14s %3d %c %6u %4d %3s %3s %4s" };
char szBuffer[80];
HDC hdc;
ScrollWindow(hWnd,0,-cyChar,&rect,&rect);
hdc=GetDC(hWnd);
SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT));
TextOut(hdc,cxChar,rect.bottom-cyChar,szBuffer,
wsprintf(szBuffer,szFormat[iType],
(LPSTR)szMessage,wParam,
(BYTE)(iType? wParam :''),/////////第59行出错的,不知道为什么??
LOWORD(lParam),
HIWORD(lParam)&0xFF,
(LPSTR)(0x01000000&lParam? "yes":"no"),
(LPSTR)(0x20000000&lParam? "yes":"no"),
(LPSTR)(0x40000000&lParam? "Down":"Up"),
(LPSTR)(0x80000000&lParam? "Up":"Down")));
ReleaseDC(hWnd,hdc);
ValidateRect(hWnd,NULL);
}
//----------------------WndProc函数实现----------------------------
LRESULT CALLBACK WndProc(HWND hWnd, UINT Message, UINT wParam, LONG lParam)
{
static char szTop[]="Message Key Char Repeat Scan Ext ALT Prev Tran";
static char szUnd[]="_______ ___ ____ ______ ____ ___ ___ ____ ____";
HDC hdc;
PAINTSTRUCT ps;//ps
TEXTMETRIC tm;
switch(Message)
{
case WM_CREATE:
hdc=GetDC(hWnd);
SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT));
GetTextMetrics(hdc,&tm);
cxChar=tm.tmAveCharWidth;
cyChar=tm.tmHeight;
ReleaseDC(hWnd,hdc);
rect.top=3*cyChar/2;
return 0;
case WM_SIZE:
rect.right=LOWORD(lParam);
rect.bottom =HIWORD(lParam);
UpdateWindow(hWnd);
return 0;
case WM_PAINT:
InvalidateRect(hWnd,NULL,TRUE);
hdc=BeginPaint(hWnd,&ps);
SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT));
SetBkMode(hdc,TRANSPARENT);
TextOut(hdc,cxChar,cyChar/2,szTop,(sizeof szTop)-1);
TextOut(hdc,cxChar,cyChar/2,szUnd,(sizeof szUnd)-1);
EndPaint(hWnd,&ps);
return 0;
case WM_KEYDOWN:
ShowKey(hWnd,0,"WM_KEYDOWN",wParam,lParam);
return 0;
case WM_KEYUP:
ShowKey(hWnd,0,"WM_KEYUP",wParam,lParam);
return 0;
case WM_CHAR:
ShowKey(hWnd,1,"WM_CHAR",wParam,lParam);
return 0;
case WM_DEADCHAR:
ShowKey(hWnd,1,"WM_DEADCHAR",wParam,lParam);
return 0;
case WM_SYSKEYDOWN:
ShowKey(hWnd,1,"WM_SYSKEYDOWN",wParam,lParam);
return 0;
case WM_SYSKEYUP:
ShowKey(hWnd,1,"WM_SYSKEYUP",wParam,lParam);
return 0;
case WM_SYSCHAR:
ShowKey(hWnd,1,"WM_SYSCHAR",wParam,lParam);
return 0;
case WM_SYSDEADCHAR:
ShowKey(hWnd,1,"WM_SYSDEADCHAR",wParam,lParam);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd,Message,wParam,lParam);
}
出错原因:
--------------------Configuration: 键盘_1 - Win32 Debug--------------------
Compiling...
键盘_1.cpp
D:\坎坎坷坷\MyProjects\键盘_1\键盘_1.cpp(59) : error C2137: empty character constant
Error executing cl.exe.
键盘_1.exe - 1 error(s), 0 warning(s)
#include<windows.h>
#include<stdlib.h>
#include<windows.h>
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG iParam);
RECT rect;
long cxChar,cyChar;
//----------------------主函数------------------------------------------------------------
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
MSG Message;
static char szAppName[]="KMessage";
HWND hWnd;
WNDCLASS WndClass;
if(!hPrevInstance)
{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.lpszClassName=szAppName;//
WndClass.lpszMenuName=NULL;//
return RegisterClass(&WndClass);
}
hWnd=CreateWindow("WinFill","填充示例程序",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,0,
CW_USEDEFAULT,0,
NULL,NULL,
hInstance,NULL);
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
while(GetMessage(&Message,0,0,0))
{
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return Message.wParam;
}
//----------------------ShowKey()函数实现----------------------------
void ShowKey(HWND hWnd,int iType,char *szMessage,UINT wParam,LONG lParam)
{
static char *szFormat[2]={"%-14s %3d %c %6u %4d %3s %3s %4s",
"%-14s %3d %c %6u %4d %3s %3s %4s" };
char szBuffer[80];
HDC hdc;
ScrollWindow(hWnd,0,-cyChar,&rect,&rect);
hdc=GetDC(hWnd);
SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT));
TextOut(hdc,cxChar,rect.bottom-cyChar,szBuffer,
wsprintf(szBuffer,szFormat[iType],
(LPSTR)szMessage,wParam,
(BYTE)(iType? wParam :''),/////////第59行出错的,不知道为什么??
LOWORD(lParam),
HIWORD(lParam)&0xFF,
(LPSTR)(0x01000000&lParam? "yes":"no"),
(LPSTR)(0x20000000&lParam? "yes":"no"),
(LPSTR)(0x40000000&lParam? "Down":"Up"),
(LPSTR)(0x80000000&lParam? "Up":"Down")));
ReleaseDC(hWnd,hdc);
ValidateRect(hWnd,NULL);
}
//----------------------WndProc函数实现----------------------------
LRESULT CALLBACK WndProc(HWND hWnd, UINT Message, UINT wParam, LONG lParam)
{
static char szTop[]="Message Key Char Repeat Scan Ext ALT Prev Tran";
static char szUnd[]="_______ ___ ____ ______ ____ ___ ___ ____ ____";
HDC hdc;
PAINTSTRUCT ps;//ps
TEXTMETRIC tm;
switch(Message)
{
case WM_CREATE:
hdc=GetDC(hWnd);
SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT));
GetTextMetrics(hdc,&tm);
cxChar=tm.tmAveCharWidth;
cyChar=tm.tmHeight;
ReleaseDC(hWnd,hdc);
rect.top=3*cyChar/2;
return 0;
case WM_SIZE:
rect.right=LOWORD(lParam);
rect.bottom =HIWORD(lParam);
UpdateWindow(hWnd);
return 0;
case WM_PAINT:
InvalidateRect(hWnd,NULL,TRUE);
hdc=BeginPaint(hWnd,&ps);
SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT));
SetBkMode(hdc,TRANSPARENT);
TextOut(hdc,cxChar,cyChar/2,szTop,(sizeof szTop)-1);
TextOut(hdc,cxChar,cyChar/2,szUnd,(sizeof szUnd)-1);
EndPaint(hWnd,&ps);
return 0;
case WM_KEYDOWN:
ShowKey(hWnd,0,"WM_KEYDOWN",wParam,lParam);
return 0;
case WM_KEYUP:
ShowKey(hWnd,0,"WM_KEYUP",wParam,lParam);
return 0;
case WM_CHAR:
ShowKey(hWnd,1,"WM_CHAR",wParam,lParam);
return 0;
case WM_DEADCHAR:
ShowKey(hWnd,1,"WM_DEADCHAR",wParam,lParam);
return 0;
case WM_SYSKEYDOWN:
ShowKey(hWnd,1,"WM_SYSKEYDOWN",wParam,lParam);
return 0;
case WM_SYSKEYUP:
ShowKey(hWnd,1,"WM_SYSKEYUP",wParam,lParam);
return 0;
case WM_SYSCHAR:
ShowKey(hWnd,1,"WM_SYSCHAR",wParam,lParam);
return 0;
case WM_SYSDEADCHAR:
ShowKey(hWnd,1,"WM_SYSDEADCHAR",wParam,lParam);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd,Message,wParam,lParam);
}
出错原因:
--------------------Configuration: 键盘_1 - Win32 Debug--------------------
Compiling...
键盘_1.cpp
D:\坎坎坷坷\MyProjects\键盘_1\键盘_1.cpp(59) : error C2137: empty character constant
Error executing cl.exe.
键盘_1.exe - 1 error(s), 0 warning(s)
解决方案 »
- 很是疑惑?关于指纹识别代码中的fvs库
- xp,win7 分别是什么操作系统?都是抢占式?
- _beginthreadex创建线程的问题
- 下的别人的程序,没有工程文件
- 学vc一年多了,一直没用过ATL,现在想学习,望各位高手提点一下
- 什么打包软件好!
- 怎样将光标限制在某区域啊?
- seesi 你的图象显示,保存程序能否email给我??????!!!!!!
- VC+ADO对每个表都得自己写一个类用来绑定吗?不会这烦吧?!
- 程序Debug时出现这么多“no matching symbolic information found.”有没有问题?
- 单文档工程view、app、dlg之间怎么互相引用啊?
- MFC Acitvex属性页中加入例如RICHEDIT,CUSTOM CONTROL后就不能响应,为什么!?
wsprintf(szBuffer,szFormat[iType],
(LPSTR)szMessage,wParam,
(BYTE)(iType? wParam :''),/////////第59行出错的,不知道为什么??
''中间没有字符,看你的意思应该是要输出空格吧 ' '
#include<stdlib.h>
// 这里的那个包含是个多余,我给你去掉了。
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG iParam);
RECT rect;
long cxChar,cyChar;
//----------------------主函数------------------------------------------------------------
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
MSG Message;
static char szAppName[]="KMessage";
HWND hWnd;
WNDCLASS WndClass;
if(!hPrevInstance)
{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.lpszClassName=szAppName;//
WndClass.lpszMenuName=NULL;//
RegisterClass(&WndClass); // 这里不能return,不然没创建窗口就over了
}
hWnd=CreateWindow(szAppName,"填充示例程序", // 窗口类当然要用你刚刚注册的窗口类
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,0,
CW_USEDEFAULT,0,
NULL,NULL,
hInstance,NULL);
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
while(GetMessage(&Message,0,0,0))
{
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return Message.wParam;
}
//----------------------ShowKey()函数实现----------------------------
void ShowKey(HWND hWnd,int iType,char *szMessage,UINT wParam,LONG lParam)
{
static char *szFormat[2]={"%-14s %3d %c %6u %4d %3s %3s %4s",
"%-14s %3d %c %6u %4d %3s %3s %4s" };
char szBuffer[80];
HDC hdc;
ScrollWindow(hWnd,0,-cyChar,&rect,&rect);
hdc=GetDC(hWnd);
SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT));
TextOut(hdc,cxChar,rect.bottom-cyChar,szBuffer,
wsprintf(szBuffer,szFormat[iType],
(LPSTR)szMessage,wParam,
(BYTE)(iType? wParam :0),// 既然不让用空字符就用0代替
LOWORD(lParam),
HIWORD(lParam)&0xFF,
(LPSTR)(0x01000000&lParam? "yes":"no"),
(LPSTR)(0x20000000&lParam? "yes":"no"),
(LPSTR)(0x40000000&lParam? "Down":"Up"),
(LPSTR)(0x80000000&lParam? "Up":"Down")));
ReleaseDC(hWnd,hdc);
ValidateRect(hWnd,NULL);
}
//----------------------WndProc函数实现----------------------------
LRESULT CALLBACK WndProc(HWND hWnd, UINT Message, UINT wParam, LONG lParam)
{
static char szTop[]="Message Key Char Repeat Scan Ext ALT Prev Tran";
static char szUnd[]="_______ ___ ____ ______ ____ ___ ___ ____ ____";
HDC hdc;
PAINTSTRUCT ps;//ps
TEXTMETRIC tm;
switch(Message)
{
case WM_CREATE:
hdc=GetDC(hWnd);
SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT));
GetTextMetrics(hdc,&tm);
cxChar=tm.tmAveCharWidth;
cyChar=tm.tmHeight;
ReleaseDC(hWnd,hdc);
rect.top=3*cyChar/2;
return 0;
case WM_SIZE:
rect.right=LOWORD(lParam);
rect.bottom =HIWORD(lParam);
UpdateWindow(hWnd);
return 0;
case WM_PAINT:
InvalidateRect(hWnd,NULL,TRUE);
hdc=BeginPaint(hWnd,&ps);
SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT));
SetBkMode(hdc,TRANSPARENT);
TextOut(hdc,cxChar,cyChar/2,szTop,(sizeof szTop)-1);
TextOut(hdc,cxChar,cyChar/2,szUnd,(sizeof szUnd)-1);
EndPaint(hWnd,&ps);
return 0;
case WM_KEYDOWN:
ShowKey(hWnd,0,"WM_KEYDOWN",wParam,lParam);
return 0;
case WM_KEYUP:
ShowKey(hWnd,0,"WM_KEYUP",wParam,lParam);
return 0;
case WM_CHAR:
ShowKey(hWnd,1,"WM_CHAR",wParam,lParam);
return 0;
case WM_DEADCHAR:
ShowKey(hWnd,1,"WM_DEADCHAR",wParam,lParam);
return 0;
case WM_SYSKEYDOWN:
ShowKey(hWnd,1,"WM_SYSKEYDOWN",wParam,lParam);
return 0;
case WM_SYSKEYUP:
ShowKey(hWnd,1,"WM_SYSKEYUP",wParam,lParam);
return 0;
case WM_SYSCHAR:
ShowKey(hWnd,1,"WM_SYSCHAR",wParam,lParam);
return 0;
case WM_SYSDEADCHAR:
ShowKey(hWnd,1,"WM_SYSDEADCHAR",wParam,lParam);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd,Message,wParam,lParam);
}
最关键的地方! hWnd=CreateWindow(szAppName,"填充示例程序", // 窗口类当然要用你刚刚注册的窗口类
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,0,
CW_USEDEFAULT,0,
NULL,NULL,
hInstance,NULL); 这里的第一个参数应该是你注册窗口时的名称即:szAppName,而不是WinFill。