-
- /************************************************************************
- * 名 称:Windows_Frist_Code.cpp
- * 功 能:Windows编程入门
- * 描 述:包含WinMain函数、WNDCLASS、消息循环等多种内容
- windows窗口程序的流程如下:【WinMain入口】-->创建和设计窗口类
- -->注册窗口类-->创建、显示和更新窗口-->消息循环-->【窗口过程函数】
- ************************************************************************/
- #include <windows.h>
- #include <stdio.h>
- #include "resource.h"
- //回调函数
- LRESULT CALLBACK WinProc(
- HWND hwnd,
- UINT uMsg,
- WPARAM wParam,
- LPARAM lParam
- );
- //入口函数 WinMain
- int WINAPI WinMain(HINSTANCE hInstance, //当前应用程序的句柄
- HINSTANCE hPrevInstance,//先前应用程序的句柄,总是NULL
- LPSTR lpCmdLine, //不包含程序名的命令行,可通过GetCommandLine获取
- int nShowCmd //窗口显示方式
- )
- {
- //-------------------创建和设计窗口类----------------------------------------------------
- WNDCLASS wndclass;
- wndclass.cbClsExtra =0;
- wndclass.cbWndExtra =0;
- wndclass.hbrBackground =(HBRUSH)GetStockObject(GRAY_BRUSH);
- wndclass.hCursor =LoadCursor(hInstance,MAKEINTRESOURCE(ID_MYCURSOR)); //LoadCursor(NULL,IDC_HELP);//
- wndclass.hIcon =LoadIcon(hInstance,MAKEINTRESOURCE(ID_MYICON)); //LoadIcon(NULL,IDI_APPLICATION);//
- wndclass.hInstance =hInstance;
- wndclass.lpfnWndProc =WinProc;
- wndclass.lpszClassName ="Jarvis";
- wndclass.lpszMenuName =NULL;
- wndclass.style =CS_HREDRAW | CS_VREDRAW;
- //-------------------注册窗口类----------------------------------------------------
- RegisterClass(&wndclass);
- //-------------------创建显示更新窗口----------------------------------------------------
- HWND hwnd;
- hwnd=CreateWindow("Jarvis","Jarvis",WS_OVERLAPPEDWINDOW|WS_HSCROLL|WS_MAXIMIZE,
- 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,
- UINT uMsg,
- WPARAM wParam,
- LPARAM lParam
- )
- {
- switch(uMsg)
- {
- case WM_LBUTTONDOWN:
- MessageBox(hwnd,"LeftButton Clicked!","Prompt",0);
- break;
- case WM_CLOSE:
- if(IDYES==MessageBox(hwnd,"Are you sure to quit?","Prompt",MB_YESNO))
- {
- DestroyWindow(hwnd);
- }
- break;
- case WM_DESTROY:
- PostQuitMessage(0);
- break;
- default:
- return DefWindowProc(hwnd,uMsg,wParam,lParam);
- }
- return 0;
- }