不怎么会用vs2005啊,高人帮忙!
下面是例题中的一个加速键应用程序:
#include<windows.h>
#include"resource.h"
#define ID_EDIT 1
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
TCHAR szAppName[]=TEXT("Pop");
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
{
HACCEL hAccel;
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.hCursor=LoadCursor(NULL,szAppName);
wndclass.style=CS_HREDRAW|CS_VREDRAW;
wndclass.lpfnWndProc=WndProc;
wndclass.hInstance=hInstance;
wndclass.hIcon=LoadIcon(hInstance,szAppName);
wndclass.lpszClassName=szAppName;
wndclass.lpszMenuName=MAKEINTRESOURCE(IDR_MENU1);
hwnd=CreateWindow(szAppName,szAppName,WS_OVERLAPPEDWINDOW,
GetSystemMetrics(SM_CXSCREEN)/4,
GetSystemMetrics(SM_CYSCREEN)/4,
GetSystemMetrics(SM_CXSCREEN)/2,
GetSystemMetrics(SM_CYSCREEN)/2,
NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,iCmdShow);
UpdateWindow(hwnd);
hAccel=LoadAccelerators(hInstance,szAppName);
while(GetMessage(&msg,NULL,0,0))
{
if(!TranslateAccelerator(hwnd,hAccel,&msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return (int)msg.wParam;
AskConfirmation(HWND hwnd)
{
return MessageBox(hwnd,TEXT("Really want to close Pop?"),szAppName,MB_YESNO|MB_ICONQUESTION);
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
static HWND hwndEdit;
int iSelect,iEnable;
switch(message)
{
case WM_CREATE:
hwndEdit=CreateWindow(TEXT("edit"),NULL,WS_CHILD|WS_VISIBLE|WS_HSCROLL|WS_VSCROLL|
WS_BORDER|ES_LEFT|ES_MULTILINE|ES_AUTOHSCROLL|ES_AUTOVSCROLL,
0,0,0,0,hwnd,(HMENU)ID_EDIT,((LPCREATESTRUCT)lParam)->hInstance,NULL);
return 0;
case WM_SETFOCUS:
SetFocus(hwndEdit);
return 0;
case WM_SIZE:
MoveWindow(hwndEdit,0,0,LOWORD(lParam),HIWORD(lParam),TRUE);
return 0;
case WM_INITMENUPOPUP:
if(lParam==1)
{
EnableMenuItem((HMENU)wParam,IDM_EDIT_UNDO,SendMessage(hwndEdit,EM_CANUNDO,0,0)?MF_ENABLED:MF_GRAYED);
EnableMenuItem((HMENU)wParam,IDM_EDIT_PASTE,IsClipboardFormatAvailable(CF_TEXT)?MF_ENABLED:MF_GRAYED);
iSelect=SendMessage(hwndEdit,EM_GETSEL,0,0);
if(HIWORD(iSelect)==LOWORD(iSelect))
iEnable=MF_GRAYED;
else
iEnable=MF_ENABLED;
EnableMenuItem((HMENU)wParam,IDM_EDIT_CUT,iEnable);
EnableMenuItem((HMENU)wParam,IDM_EDIT_COPY,iEnable);
EnableMenuItem((HMENU)wParam,IDM_EDIT_CLEAR,iEnable);
return 0;
}
break;
case WM_COMMAND:
if(lParam)
{
if(LOWORD(lParam)==ID_EDIT&&(HIWORD(wParam)==EN_ERRSPACE||HIWORD(wParam)==EN_MAXTEXT))
MessageBox(hwnd,TEXT("Edit control out of space."),szAppName,MB_OK|MB_ICONSTOP);
return 0;
}
else switch(LOWORD(wParam))
{
case IDM_FILE_NEW:
case IDM_FILE_OPEN:
case IDM_FILE_SAVE:
case IDM_FILE_SAVE_AS:
case IDM_FILE_PRINT:
MessageBeep(0);
return 0;
case IDM_APP_EXIT:
SendMessage(hwnd,WM_CLOSE,0,0);
return 0;
case IDM_EDIT_UNDO:
SendMessage(hwndEdit,WM_UNDO,0,0);
return 0;
case IDM_EDIT_CUT:
SendMessage(hwndEdit,WM_CUT,0,0);
return 0;
case IDM_EDIT_COPY:
SendMessage(hwndEdit,WM_COPY,0,0);
return 0;
case IDM_EDIT_PASTE:
SendMessage(hwndEdit,WM_PASTE,0,0);
return 0;
case IDM_EDIT_CLEAR:
SendMessage(hwndEdit,WM_CLEAR,0,0);
return 0;
case IDM_EDIT_SELECT_ALL:
SendMessage(hwndEdit,WM_SETSEL,0,-1);
return 0;
case IDM_HELP_HELP:
MessageBox(hwnd,TEXT("Help not yet implemented!"),szAppName,MB_OK|MB_ICONEXCLAMATION);
return 0;
case IDM_APP_ABOUT:
MessageBox(hwnd,TEXT("Charles Petzold,1998"),szAppName,MB_OK|MB_ICONEXCLAMATION);
return 0;
}
break;
case WM_CLOSE:
if(IDYES==AskConfirmation(hwnd))
DestroyWindow(hwnd);
return 0;
case WM_QUERYENDSESSION:
if(IDYES==AskConfirmation(hwnd))
return 1;
else
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
return DefWindowProc(hwnd,message,wParam,lParam);
}
编译是会说找不到"resource.h",但当我添加了资源时又会报好多错!
这是为什么啊?本人还是一个小菜鸟,请指点!
--------------------------------------------
.\accelerator.cpp(48) : error C2275: “HWND”: 将此类型用作表达式非法
D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\windef.h(207) : 参见“HWND”的声明
.\accelerator.cpp(48) : error C2146: 语法错误 : 缺少“)”(在标识符“hwnd”的前面)
.\accelerator.cpp(48) : error C2059: 语法错误 : “)”
.\accelerator.cpp(49) : error C2143: 语法错误 : 缺少“;”(在“{”的前面)
.\accelerator.cpp(48) : error C3861: “AskConfirmation”: 找不到标识符
.\accelerator.cpp(54) : error C2601: “WndProc”: 本地函数定义是非法的
.\accelerator.cpp(10): 此行有一个“{”没有匹配项
.\accelerator.cpp(146) : fatal error C1075: 与左侧的 大括号“{”(位于“.\accelerator.cpp(54)”)匹配之前遇到文件结束