windows实验一



Windows编程实验一

http://winprog.org/tutorial/zh/start_cn.html  第一页第三页内容,PPT21页


一:

#include <windows.h>

 

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,

   LPSTR lpCmdLine, int nCmdShow)

{

   MessageBox(NULL, "Goodbye, cruel world!", "Note",MB_OK);

   return 0;

}

 

二:

#include <windows.h>

 

const char g_szClassName[] ="myWindowClass";

 

LRESULT CALLBACK WndProc(HWND hwnd, UINTmsg, WPARAM wParam, LPARAM lParam)

{

   switch(msg)

    {

       case WM_LBUTTONDOWN:

       {

           char szFileName[MAX_PATH];

           HINSTANCE hInstance = GetModuleHandle(NULL);

 

           GetModuleFileName(hInstance, szFileName, MAX_PATH);

           MessageBox(hwnd, szFileName, "This program is:", MB_OK |MB_ICONINFORMATION);

       }

       break;

       case WM_CLOSE:

           DestroyWindow(hwnd);

       break;

       case WM_DESTROY:

           PostQuitMessage(0);

       break;

       default:

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

    }

   return 0;

}

 

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,

   LPSTR lpCmdLine, int nCmdShow)

{

   WNDCLASSEX wc;

   HWND hwnd;

   MSG Msg;

 

   wc.cbSize        =sizeof(WNDCLASSEX);

   wc.style         = 0;

   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)(COLOR_WINDOW+1);

   wc.lpszMenuName  = NULL;

   wc.lpszClassName = g_szClassName;

   wc.hIconSm       = LoadIcon(NULL,IDI_APPLICATION);

 

   if(!RegisterClassEx(&wc))

    {

       MessageBox(NULL, "Window Registration Failed!","Error!",

           MB_ICONEXCLAMATION | MB_OK);

       return 0;

    }

 

   hwnd = CreateWindowEx(

       WS_EX_CLIENTEDGE,

       g_szClassName,

       "The title of my window",

       WS_OVERLAPPEDWINDOW,

       CW_USEDEFAULT, CW_USEDEFAULT, 240, 120,

       NULL, NULL, hInstance, NULL);

 

   if(hwnd == NULL)

    {

       MessageBox(NULL, "Window Creation Failed!","Error!",

           MB_ICONEXCLAMATION | MB_OK);

       return 0;

    }

 

   ShowWindow(hwnd, nCmdShow);

   UpdateWindow(hwnd);

 

   while(GetMessage(&Msg, NULL, 0, 0) > 0)

    {

       TranslateMessage(&Msg);

       DispatchMessage(&Msg);

    }

   return Msg.wParam;

}

三:

#include <windows.h>

 

const char g_szClassName[] ="myWindowClass";

 

LRESULT CALLBACK WndProc(HWND hwnd, UINTmsg, WPARAM wParam, LPARAM lParam)

{

   switch(msg)

    {

       case WM_LBUTTONDOWN:

       {

           MessageBox(hwnd, TEXT("你点击了一下!"), TEXT("通知"), MB_OK | MB_ICONINFORMATION);

       }

       break;

       case WM_CLOSE:

           DestroyWindow(hwnd);

       break;

       case WM_DESTROY:

           PostQuitMessage(0);

       break;

       default:

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

    }

   return 0;

}

 

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,

   LPSTR lpCmdLine, int nCmdShow)

{

   WNDCLASSEX wc;

   HWND hwnd;

   MSG Msg;

 

   wc.cbSize        =sizeof(WNDCLASSEX);

   wc.style         = 0;

   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)(COLOR_WINDOW+1);

   wc.lpszMenuName  = NULL;

   wc.lpszClassName = g_szClassName;

   wc.hIconSm       = LoadIcon(NULL,IDI_APPLICATION);

 

   if(!RegisterClassEx(&wc))

    {

       MessageBox(NULL, "Window Registration Failed!","Error!",

           MB_ICONEXCLAMATION | MB_OK);

       return 0;

    }

 

   hwnd = CreateWindowEx(

       WS_EX_CLIENTEDGE,

       g_szClassName,

       "The title of my window",

       WS_OVERLAPPEDWINDOW,

       CW_USEDEFAULT, CW_USEDEFAULT, 240, 120,

       NULL, NULL, hInstance, NULL);

 

   if(hwnd == NULL)

    {

       MessageBox(NULL, "Window Creation Failed!","Error!",

           MB_ICONEXCLAMATION | MB_OK);

       return 0;

    }

 

   ShowWindow(hwnd, nCmdShow);

   UpdateWindow(hwnd);

 

   while(GetMessage(&Msg, NULL, 0, 0) > 0)

    {

       TranslateMessage(&Msg);

       DispatchMessage(&Msg);

    }

   return Msg.wParam;

}

 

 

2、小组讨论研究:(1)通过查阅资料、读代码和写代码去验证,研究C语言typedef语句和宏的用法,以及在写Win32 API程序过程中的用途。(2typedef语句和宏的使用有哪些优缺点?(3)如果使用C++语言,怎样用更好的语法替代宏?(4)如果使用java语言呢?

 

#define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错;
typedef
是在编译时处理的。它在自己的作用域内给一个已经存在的类型一个别名;
c++
可使用const常量,incline内联函数;java可使用final
 static

猜你喜欢

转载自blog.csdn.net/sakicc/article/details/60142875