Chinaunix首页 | 论坛 | 博客
  • 博客访问: 41038
  • 博文数量: 37
  • 博客积分: 1690
  • 博客等级: 上尉
  • 技术积分: 385
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-01 14:07
文章分类

全部博文(37)

文章存档

2008年(37)

我的朋友
最近访客

分类: C/C++

2008-10-13 17:36:04

#include
#include "resource.h"

#define ID_TIMER 1
TCHAR szAppName[] = TEXT("MenuDemo");
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)
{
    WNDCLASS wc;
    HWND hwnd;
    MSG Msg;

    //Step 1: Registering the Window Class
    wc.style         = CS_HREDRAW|CS_VREDRAW;
    wc.lpfnWndProc     = WndProc;
    wc.cbClsExtra     = 0;
    wc.cbWndExtra     = 0;
    wc.hInstance     = hInstance;
    wc.hIcon         = LoadIcon(NULL,IDI_APPLICATION);
    wc.hCursor         = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wc.lpszMenuName  = MAKEINTRESOURCE(IDR_MENU);
    wc.lpszClassName = szAppName;

    if(!RegisterClass(&wc))
    {
        MessageBox(NULL, "Window Registration Failed!", "Error!",
            MB_ICONEXCLAMATION | MB_OK);
        return 0;
    }

    // Step 2: Creating the Window
    hwnd = CreateWindow(
        szAppName,
        TEXT("Menu Demo"),
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
        NULL, NULL, hInstance, NULL);

    if(hwnd == NULL)
    {
        MessageBox(NULL, "Window Creation Failed!", "Error!",
            MB_ICONEXCLAMATION | MB_OK);
        return 0;
    }

    ShowWindow(hwnd, nCmdShow);
    UpdateWindow(hwnd);

    // Step 3: The Message Loop
    while(GetMessage(&Msg, NULL, 0, 0))
    {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
    return Msg.wParam;
}


// Step 4: the Window Procedure
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    static int idColor[5] = {WHITE_BRUSH,LTGRAY_BRUSH,GRAY_BRUSH,DKGRAY_BRUSH,BLACK_BRUSH};
    static int iSelection = IDM_BKGND_WHITE;
    HMENU hMenu;
    switch(msg)
    {
        case WM_COMMAND:
            hMenu = GetMenu(hwnd);

            switch(LOWORD(wParam))
            {
            case IDM_FILE_NEW:
            case IDM_FILE_OPEN:
            case IDM_FILE_SAVE:
            case IDM_FILE_SAVE_AS:
                MessageBeep(0);
                return 0;
               
            case IDM_APP_EXIT:
                SendMessage(hwnd,WM_CLOSE,0,0);
                return 0;

            case IDM_EDIT_UNDO:
            case IDM_EDIT_CUT:
            case IDM_EDIT_COPY:
            case IDM_EDIT_PASTE:
            case IDM_EDIT_CLEAR:
                MessageBeep(0);
                return 0;

            case IDM_BKGND_WHITE:
            case IDM_BKGND_LTGRAY:
            case IDM_BKGND_GRAY:
            case IDM_BKGND_DKGRAY:
            case IDM_BKGND_BLACK:

                CheckMenuItem(hMenu,iSelection,MF_UNCHECKED);
                iSelection = LOWORD(wParam);
                CheckMenuItem(hMenu,iSelection,MF_CHECKED);

                SetClassLong(hwnd,GCL_HBRBACKGROUND,(LONG)GetStockObject(idColor[LOWORD(wParam)-IDM_BKGND_WHITE]));

                InvalidateRect(hwnd,NULL,TRUE);
                return 0;

            case IDM_TIMER_START:
                if(SetTimer(hwnd,ID_TIMER,1000,NULL))
                {
                    EnableMenuItem(hMenu,IDM_TIMER_START,MF_GRAYED);
                    EnableMenuItem(hMenu,IDM_TIMER_STOP,MF_ENABLED);
                }
                return 0;

            case IDM_TIMER_STOP:
                KillTimer(hwnd,ID_TIMER);
                EnableMenuItem(hMenu,IDM_TIMER_START,MF_ENABLED);
                EnableMenuItem(hMenu,IDM_TIMER_STOP,MF_GRAYED);
                return 0;

            case IDM_APP_HELP:
                MessageBox(hwnd,TEXT("你单击了帮助菜单"),szAppName,MB_ICONEXCLAMATION|MB_OK);
                return 0;
               
            case IDM_APP_ABOUT:
                MessageBox(hwnd,TEXT("Menu Demonstration Program\n")TEXT("(c)mengzihan,2008"),szAppName,MB_ICONINFORMATION|MB_OK);
                return 0;

            }
            break;
           
            case WM_TIMER:
                MessageBeep(0);
                return 0;


        case WM_CLOSE:
            DestroyWindow(hwnd);
        break;
        case WM_DESTROY:
            PostQuitMessage(0);
        break;

           
    }
return DefWindowProc(hwnd, msg, wParam, lParam);
}


阅读(743) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-07-16 15:42:18

问问? 为什么编程时,resource,出错了?not found file?