#include<windows.h>
#include<stdio.h>
LRESULT CALLBACK WinProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);int WINAPI WinMain(
HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance-----------
LPSTR lpCmdLine, // command line
int nCmdShow // show state
)
{
WNDCLASS wndclass;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hInstance=hInstance;
wndclass.lpfnWndProc=WinProc;
wndclass.lpszClassName="shenhao";
wndclass.lpszMenuName=NULL;
wndclass.style=CS_HREDRAW|CS_VREDRAW;
RegisterClass(&wndclass);
HWND hwnd;
hwnd=CreateWindow("shenhao","加油",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK WinProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
){
HDC hdc;
PAINTSTRUCT ps;
static i=0;
static j=10;
static k=0;
static m=10;
switch(uMsg)
{
case WM_CREATE:
SetTimer(hwnd,1,100,NULL);
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
RECT rt;
GetClientRect(hwnd,&rt);
if(i==0)
{
Pie(hdc,100+j,100,150+j,150,150+j,100,150+j,150);
}
else
{
Pie(hdc,100+j,100,150+j,150,150+j,125,150+j,125);
}
i=(i+1)%2;
if(j<rt.right-150)
{
j=(j+10)%1000;
}
EndPaint(hwnd,&ps); break;
case WM_KEYDOWN:
{
switch(wParam)
{
case VK_LEFT:
hdc=GetDC(hwnd);
RECT rt1;
GetClientRect(hwnd,&rt1);
if(k==0)
{
Pie(hdc,100+j-m,100,150+j-m,150,100+j-m,150,100+j-m,100);
}
else
{
Pie(hdc,100+j-m,100,150+j-m,150,100+j-m,125,100+j-m,125);
}
k=(k+1)%2;
if(100+j-m<rt1.left)
{
m=(m+10)%1000;
}
ReleaseDC(hwnd,hdc);
break;
}
}
break;
case WM_TIMER:
InvalidateRect(hwnd,NULL,TRUE);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}
#include<stdio.h>
LRESULT CALLBACK WinProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);int WINAPI WinMain(
HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance-----------
LPSTR lpCmdLine, // command line
int nCmdShow // show state
)
{
WNDCLASS wndclass;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hInstance=hInstance;
wndclass.lpfnWndProc=WinProc;
wndclass.lpszClassName="shenhao";
wndclass.lpszMenuName=NULL;
wndclass.style=CS_HREDRAW|CS_VREDRAW;
RegisterClass(&wndclass);
HWND hwnd;
hwnd=CreateWindow("shenhao","加油",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK WinProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
){
HDC hdc;
PAINTSTRUCT ps;
static i=0;
static j=10;
static k=0;
static m=10;
switch(uMsg)
{
case WM_CREATE:
SetTimer(hwnd,1,100,NULL);
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
RECT rt;
GetClientRect(hwnd,&rt);
if(i==0)
{
Pie(hdc,100+j,100,150+j,150,150+j,100,150+j,150);
}
else
{
Pie(hdc,100+j,100,150+j,150,150+j,125,150+j,125);
}
i=(i+1)%2;
if(j<rt.right-150)
{
j=(j+10)%1000;
}
EndPaint(hwnd,&ps); break;
case WM_KEYDOWN:
{
switch(wParam)
{
case VK_LEFT:
hdc=GetDC(hwnd);
RECT rt1;
GetClientRect(hwnd,&rt1);
if(k==0)
{
Pie(hdc,100+j-m,100,150+j-m,150,100+j-m,150,100+j-m,100);
}
else
{
Pie(hdc,100+j-m,100,150+j-m,150,100+j-m,125,100+j-m,125);
}
k=(k+1)%2;
if(100+j-m<rt1.left)
{
m=(m+10)%1000;
}
ReleaseDC(hwnd,hdc);
break;
}
}
break;
case WM_TIMER:
InvalidateRect(hwnd,NULL,TRUE);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
//加:while (GetMessage(&msg, NULL, 0, 0))
{
if (!TranslateAccelerator(ghwndApp, ghaccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
//当然 WinMain中:
if (!(ghaccelTable = LoadAccelerators(hInst, MAKEINTRESOURCE(IDACCEL_ZOOMIN)))) return FALSE;
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
//当然 WinMain中:
if (!(ghaccelTable = LoadAccelerators(hInst, MAKEINTRESOURCE(IDACCEL_ZOOMIN)))) return FALSE;
是什么意思啊?能帮我解释 解释吗?谢了 还有我把它们加上 错误提示是没有定义这又是怎么回事呢 谢谢啦
如果没有资源,用CreateAcceleratorTable
//
HACCEL CreateAcceleratorTable(
LPACCEL lpaccl, // pointer to structure array with accelerator data
int cEntries // number of structures in the array
);
//如:
ACCEL acc;
acc.fVirt=FVIRTKEY;
acc.key=VK_LEFT;
acc.cmd=2000;
HACCEL ghaccelTable=CreateAcceleratorTable(&acc,1)//一个
1》先定义 命令ID:
#define IDC_KEY_LEFT 2007
其他键。
2》WinMain中:
//
acc.fVirt=FVIRTKEY;
acc.key=VK_LEFT;
acc.cmd=IDC_KEY_LEFT; ghaccelTable=CreateAcceleratorTable(&acc,1);//一个 while(GetMessage(&Message,0,0,0))
{ // don't need if TTF_SUBCLASS
//if(m_hToolTip) SendMessage(m_hToolTip, TTM_RELAYEVENT, 0, (LPARAM)&Message);
if (!TranslateAccelerator(hParentWnd, ghaccelTable, &Message))
{
TranslateMessage(&Message);
DispatchMessage(&Message);
}
}
3》注意现在WM_KEYDOWN已被翻译成WM_COMMAND。所以要在:
case WM_COMMAND:
if((wParam & 0xFFFF)==IDC_KEY_LEFT)
{//VK_LEFT
OutputDebugString("haha");
}
break;
而使用加速键WM_COMMAND,父窗口要检测子窗口。
都是麻烦事。
你自己结合代码好好想想吧
#include<windows.h>
#include<stdio.h>int nDirect = 0;LRESULT CALLBACK WinProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);int WINAPI WinMain(
HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance-----------
LPSTR lpCmdLine, // command line
int nCmdShow // show state
)
{
WNDCLASS wndclass;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hInstance=hInstance;
wndclass.lpfnWndProc=WinProc;
wndclass.lpszClassName="shenhao";
wndclass.lpszMenuName=NULL;
wndclass.style=CS_HREDRAW|CS_VREDRAW;
RegisterClass(&wndclass);
HWND hwnd;
hwnd=CreateWindow("shenhao","加油",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0 ;
}
LRESULT CALLBACK WinProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
){
HDC hdc;
PAINTSTRUCT ps;
static int i = 0;
static int nLeft = 0;
static int nTop = 0;
static int nStepX = 10;
static int nStepY = 0;
static int nOpenStartX = 50;
static int nOpenEndX = 50;
static int nOpenStartY = 0;
static int nOpenEndY = 50;
static int nCloseOffsetX = 50;
static int nCloseOffsetY = 25;
switch(uMsg)
{
case WM_CREATE:
SetTimer(hwnd,1,100,NULL);
case WM_PAINT:
hdc=BeginPaint(hwnd, &ps); RECT rt;
GetClientRect(hwnd, &rt);
if(i==0)
{
Pie(hdc, nLeft, nTop, nLeft+50, nTop+50, nLeft+nOpenStartX, nTop+nOpenStartY, nLeft+nOpenEndX, nTop+nOpenEndY);
}
else
{
Pie(hdc, nLeft, nTop, nLeft+50, nTop+50, nLeft+nCloseOffsetX, nTop+nCloseOffsetY, nLeft+nCloseOffsetX, nTop+nCloseOffsetY);
}
i=(i+1)%2; nLeft += nStepX;
nTop += nStepY;
if(nLeft > rt.right-50)
nLeft = rt.right-50; if(nLeft < 0)
nLeft = 0; if(nTop < 0)
nTop = 0; if(nTop > rt.bottom-50)
nTop = rt.bottom-50; EndPaint(hwnd,&ps); break;
case WM_KEYDOWN:
{
switch(wParam)
{
case VK_RIGHT:
{
nStepX = 10;
nStepY = 0;
nOpenStartX = 50;
nOpenEndX = 50;
nOpenStartY = 0;
nOpenEndY = 50;
nCloseOffsetX = 50;
nCloseOffsetY = 25;
}break;
case VK_LEFT:
{
nStepX = -10;
nStepY = 0;
nOpenStartX = 0;
nOpenEndX = 0;
nOpenStartY = 50;
nOpenEndY = 0;
nCloseOffsetX = 0;
nCloseOffsetY = 25;
}break;
case VK_UP:
{
nStepX = 0;
nStepY = -10;
nOpenStartX = 0;
nOpenEndX = 50;
nOpenStartY = 0;
nOpenEndY = 0;
nCloseOffsetX = 25;
nCloseOffsetY = 0;
}break;
case VK_DOWN:
{
nStepX = 0;
nStepY = 10;
nOpenStartX = 50;
nOpenEndX = 0;
nOpenStartY = 50;
nOpenEndY = 50;
nCloseOffsetX = 25;
nCloseOffsetY = 50;
}break;
}
}
break;
case WM_TIMER: InvalidateRect(hwnd,NULL,TRUE);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}