ITPub博客

首页 > Linux操作系统 > Linux操作系统 > VC深入详解 第一个WINMAIN程序 

VC深入详解 第一个WINMAIN程序 

原创 Linux操作系统 作者:czhaii 时间:2013-11-09 21:15:46 0 删除 编辑


#include
#include  
 
LRESULT CALLBACK WinSunProc(
  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 wndcls;                                          //P6
    wndcls.cbClsExtra=0;                                      //1注册窗口类时追加内存空间用于存储附加信息
    wndcls.cbWndExtra=0;                                      //2创建窗口类时追加内存空间用于存储附加信息
    wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH); //3画刷句柄窗口重绘时指定画刷擦除窗口背景&颜色
    wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);                //4光标资源句柄
    wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);                    //5图标
    wndcls.hInstance=hInstance;                               //6应用实例句柄,由WinMain函数传进来
    wndcls.lpfnWndProc=WinSunProc;                            //7指向窗口过程回调函数
    wndcls.lpszClassName="sunxin2006";                        //8指定菜单资源名字
    wndcls.lpszMenuName=NULL;                                 //9窗口名
    wndcls.style=CS_HREDRAW | CS_VREDRAW;                     //A窗口样式
    RegisterClass(&wndcls);                                   //
 
    HWND hwnd;                                                //创建对象变量
    hwnd=CreateWindow("sunxin2006","http://www.sunxin.org",WS_OVERLAPPEDWINDOW,
        0,0,600,400,NULL,NULL,hInstance,NULL);                //创建的对象变量存放数据
    ShowWindow(hwnd,SW_SHOWNORMAL);
    UpdateWindow(hwnd); 
 
    MSG msg;                                                  //消息变量
    while(GetMessage(&msg,NULL,0,0))
    {
        TranslateMessage(&msg);                               //转换字符消息
        DispatchMessage(&msg);                                //将消息回传给操作系统
    }
    return msg.wParam;

 
LRESULT CALLBACK WinSunProc(
  HWND hwnd,      // handle to window
  UINT uMsg,      // message identifier
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
)
{
    switch(uMsg)
    {
    case WM_CHAR:                                             //字符消息
        char szChar[20];
        sprintf(szChar,"您输入的字符代码为 %d",wParam);       //字符打印
        MessageBox(hwnd,szChar,"char",0);
        break;
    case WM_LBUTTONDOWN:                                      //左键
        MessageBox(hwnd,"mouse clicked","message",0);
        HDC hdc;
        hdc=GetDC(hwnd);
        TextOut(hdc,0,50,"程序员之家",strlen("程序员之家"));  //文本输出
        //ReleaseDC(hwnd,hdc);
        break;
    case WM_RBUTTONDOWN:                                      //右键
        MessageBox(hwnd,"mouse clicked","message",0);
        HDC hdc1;
        hdc1=GetDC(hwnd);
        TextOut(hdc1,5,150,"谁的心 落在水乡忘了收",strlen("谁的心 落在水乡忘了收"));  //文本输出
        //ReleaseDC(hwnd,hdc);
        break;
    case WM_PAINT:                                            //重绘窗口
        HDC hDC;
        PAINTSTRUCT ps;                                       //
        hDC=BeginPaint(hwnd,&ps);                             //开始重绘
        TextOut(hDC,0,0,"http://www.sunxin.org",strlen("http://www.sunxin.org"));//文本输出
        EndPaint(hwnd,&ps);                                   //重绘结束
        break;
    case WM_CLOSE:                                            //关闭窗口
        if(IDYES==MessageBox(hwnd,"是否真的结束?","message",MB_YESNO))//文本输出
        {
            DestroyWindow(hwnd);
        }
        break;
    case WM_DESTROY:                                          //销毁窗口
        PostQuitMessage(0);                                   //发送消息关闭窗口
        break;
    default:
        return DefWindowProc(hwnd,uMsg,wParam,lParam);        //
    }
    return 0;


Win32 Application 是标准 windows程序,完全拥有windows的特性,也即我们常说的窗口应用程序!它通过GUI(Graphics User Interface图形用户接口)可以把窗口界面做得比较个性化,比如圆形的、不规则形状的等等,另外,我们还可以通过鼠标点击来完成控制。所以说它是基于WINDOWS平台的32位开发环境开发应用程序(即,SDK程序)。入口函数为WinMain()。
Win32 Console Application(win32控制台应用程序)往往是像MS-DOS窗口(XP中叫命令提示符)的样子出现,我们得用键盘输入各种命令来使用它,它与纯dos程序区别是:它是32位的;或者叫CUI(Character User Interface字符用户接口)。console程序以main()为入口,可以访问部分windows API函数,比如创建窗口、对话框等等。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27660822/viewspace-776208/,如需转载,请注明出处,否则将追究法律责任。

上一篇: MFC控件精简
请登录后发表评论 登录
全部评论

注册时间:2012-08-22

  • 博文量
    22
  • 访问量
    48253