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 -----------------------------