使用API,手工生成 Windows应用程序全过程(图解+文字说明)

  1. 首先找到VC++6.0应用程序图标,双机打开VC++6.0。





  2. 在VC菜单栏,选择“File"菜单。


  3. 选择“NEW“菜单项,打开”NEW“对话框。


  4. 如上对话框所示,选择”Project“栏,选中"Win32 Application",在”Project Name“中输入工程名,选择好保存地址。然后单击”OK“。



  5. 弹出如上对话框,选择”An empty project“,然后单击”Finish“。
  6. 此时进入编辑界面。选择"FileView"视图,展开”Source Files“文件夹,选中”windows.cpp“.(此时是你定义的,工程名.cpp),点击打开此cpp文件。

  7. 将文件中的原有内容删除。插入如下代码。
    // windows.cpp : Defines the entry point for the application.
    //
    #include "stdafx.h"
    #include <windows.h>
    #include <stdio.h>
    
    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;
    	wndcls.cbClsExtra=0;
    	wndcls.cbWndExtra=0;
    	wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
    	wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);
    	wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);
    	wndcls.hInstance=hInstance;
    	wndcls.lpfnWndProc=WinSunProc;
    	wndcls.lpszClassName="Computer2016";
    	wndcls.lpszMenuName=NULL;
    	wndcls.style=CS_HREDRAW | CS_VREDRAW;
    	RegisterClass(&wndcls);	//注册窗口类
    	HWND hwnd;
    	hwnd=CreateWindow("Computer2016","四川理工学院-计算机学院",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 0;
    }
    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,"char is %d",wParam);
    		MessageBox(hwnd,szChar,"weixin",0);
    		break;
    	case WM_LBUTTONDOWN:
    		
    		MessageBeep(10);	//提示音。
    		MessageBox(hwnd,"你按下了鼠标!","提示",0);
    		HDC hdc;
    		hdc=GetDC(hwnd);
    		TextOut(hdc,0,50,"Widows程序设计实验",strlen("Widows程序设计实验"));
    		ReleaseDC(hwnd,hdc);
    		break;
    
    	case WM_PAINT:
    		HDC hDC;
    		PAINTSTRUCT ps;
    		hDC=BeginPaint(hwnd,&ps);
    		TextOut(hDC,0,0," 程序设计实验",strlen("程序设计实验")+1);
    		
    		EndPaint(hwnd,&ps);
    		break;
    	case WM_CLOSE:	
    		if(IDYES==MessageBox(hwnd,"是否真的结束?","提示",MB_YESNO))
    		{
    		
    	
    			DestroyWindow(hwnd);
    		}
    		break;
    	case WM_DESTROY:
    		PostQuitMessage(0);
    		break;
    	default:
    		return DefWindowProc(hwnd,uMsg,wParam,lParam);
    	}
    	return 0;
    }
    
  8. 点击工具栏的编译运行按钮。


  9. 运行结果如下:


  10. 此程序添加了鼠标响应函数和窗口销毁响应函数和窗口重绘函数,所以点击鼠标左键或关闭窗口或移动窗口时,程序会对于做出相应的操作。

  11. 至此,通过手工建立一个应用程序的过程便结束了。

    注:参考同类文章,Windows,C++编程创建窗口的过程详解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值