TimeMachine

导航

Vc编程基础

作者envily                         转自研学论坛

相信又很多徘徊在VC或者MFC编程的朋友,有人认为它们实在太难了,不如VB好学
,而且VB的界面做的也很好。。。但是,我想这是那些逃避困难的人的借口,其实
VC的学习,刚开始可能很难,但只要你能挺过去,很快你就会发现VC也没有那么难,
而且VC强大的功能 会让你 对它 爱不释手。。。好了,就说这些吧!下面开始介绍程序:

相信又很多徘徊在VC或者MFC编程的朋友,有人认为它们实在太难了,不如VB好学
,而且VB的界面做的也很好。。。但是,我想这是那些逃避困难的人的借口,其实
VC的学习,刚开始可能很难,但只要你能挺过去,很快你就会发现VC也没有那么难,
而且VC强大的功能 会让你 对它 爱不释手。。。好了,就说这些吧!下面开始介绍程序:

很多人可能喜欢用MFC,因为它为我们建好了框架,但这些对初学者来说恰恰是很重要得,
我们只有先了解了 它的框架,才能嘎÷更好的掌握它。首先,我有一个忠告;如果你没有学过
c++,你确实应该先去看一下C++,也许你不必要去深入的理解它,但至少你应该了解它。

下面这个程序 将有助你理解 Windows编程的结构。Windows编程由两个主要函数:主函数和窗口函数。

//设计Windows程序必须包含的头文件

#include <afxwin.h>

//定义全局变量--------------------------

HINSTANCE hInstance;
HWND hWnd;
MSG msg;
char lpszClassname[]="窗口";
char *ShowText;

//定义函数-----------------------------

ATOM MyRegisterClass(HINSTANCE hInstance); //注册窗口类函数
BOOL Create(HINSTANCE,int); //程序实例 初始化 函数
int Run(); //消息循环 函数
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); // 窗口函数

//主函数-----------------------------

int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
           LPSTR lpCmdLine,int nCmdShow)
{
  MyRegisterClass(hInstance); //在主函数中定义窗口类函数
  Create(hInstance,nCmdShow); //创建窗口
  ShowWindow(hWnd,nCmdShow); //显示窗口
  UpdateWindow(hWnd); //更新屏幕显示
  return Run(); //消息循环
}

//注册窗口类的 函数实现----------------------

ATOM MyRegisterClass(HINSTANCE hInstance)
{
  WNDCLASS wc;
  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)GetStockObject(WHITE_BRUSH);
  wc.lpszMenuName=NULL;
  wc.lpszClassName=lpszClassname;
  return RegisterClass(&wc);
}

//创建窗口函数 的实现-----------------------

BOOL Create(HINSTANCE hInstance,int nCmdShow)
{
  hWnd=CreateWindow(lpszClassname,"Windows",WS_OVERLAPPEDWINDOW,
     10,10,800,600,NULL,NULL,hInstance,NULL);
  return TRUE;
}

//消息循环函数 的实现-----------------------

int Run()
{
  while(GetMessage(&msg,NULL,0,0))
  {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
  }
  return msg.wParam;
}

//窗口函数 的实现---------------------------

LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
  PAINTSTRUCT ps;
  HDC hdc;
  switch(message)
  {
  case WM_LBUTTONDOWN:
    ShowText="Hello!";
    InvalidateRect(hWnd,NULL,1);
    break;
  case WM_PAINT:
    hdc=BeginPaint(hWnd,&ps);
    TextOut(hdc,50,50,ShowText,6);
    EndPaint(hWnd,&ps);
    break;
  case WM_DESTROY:
    PostQuitMessage(0);
    break;
  default:
    return DefWindowProc(hWnd,message,wParam,lParam);
  }
  return 0;
}

// ----------------------------- The end of the program -----------------------------

envily edited on 2005-04-23 12:38

posted on 2005-05-24 22:44  饽饽  阅读(5482)  评论(5编辑  收藏  举报