LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) //回调函数的声明,将在wndclass.lpfnWndProc = WndProc中用到
//主函数即入口函数
int WINAPI WinMain (HINSTANCE hInstance, //实例句柄
HINSTANCE hPrevInstance,//上一个实例句柄
PSTR szCmdLine, //指向一个0结尾的字符串
int iCmdShow) //窗口开始的大小
{
static TCHAR szAppName[] = TEXT ("HelloWin") //将"HelloWin"赋给szAppName[]
HWND hwnd //定义一个窗口句柄,用来标识窗口
MSG msg //定义一个消息结构体,该结构体包含消息的几个数据
WNDCLASS wndclass //定义一个窗口类,该窗口类也是个结构体,下面的语句是修改结构体数据
wndclass.style = CS_HREDRAW | CS_VREDRAW //窗口绘制模式为水平重绘和垂直重绘
wndclass.lpfnWndProc = WndProc //回调函数为一开始申明的函数
wndclass.cbClsExtra = 0 //类的附加内存(额外的),不需要就设为0
wndclass.cbWndExtra = 0 //窗口的附加内存,同上
wndclass.hInstance = hInstance // 当前实例为系统纯返传递过来的实例,只能是这样,其它系统帮你做好了
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) //加载ICON图标,NULL加载系统的图标,第二个参数使系统里面图标的一个标识
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) //同上,不过是加载光标
wndclass.hbrBackground= (HBRUSH) GetStockObject (WHITE_BRUSH) // 设置窗口背景为白色
wndclass.lpszMenuName = NULL //因为没有菜单,所以设为空
wndclass.lpszClassName= szAppName //你为你设计的这个窗口类取个名字,在hwnd = CreateWindow(中用到
if (!RegisterClass (&wndclass)) //注册你刚刚设计好的窗口
{
//注册不成功,d出消息框,显示引号里文字
MessageBox ( NULL, //通常是窗口句柄
TEXT ("This program requires Windows NT!"), //消息框显示的文字
szAppName, //题列上的字符串
MB_ICONERROR) //消息框的按钮
return 0
}
//创建窗口
hwnd = CreateWindow( szAppName, // window class name 窗口类的名字
TEXT ("The Hello Program"), // window caption 窗口的标题
WS_OVERLAPPEDWINDOW, // window style 窗口的风格
CW_USEDEFAULT,// initial x position 默认的窗口左上角的X、Y点
CW_USEDEFAULT,// initial y position
CW_USEDEFAULT,// initial x size 默认窗口显示的宽和高
CW_USEDEFAULT,// initial y size
NULL, // parent window handle 没有父窗口
NULL, // window menu handle 没有菜单、菜单句柄为空
hInstance, // program instance handle 程序当前实例,由系统传递
NULL) // creation parameters
ShowWindow (hwnd, iCmdShow) //显示窗口
UpdateWindow (hwnd) //更新窗口
while (GetMessage (&msg, NULL, 0, 0)) //消息循环,获取消息
{
TranslateMessage (&msg) //翻译消息,
DispatchMessage (&msg) // 分发消息
}
return msg.wParam //返回消息里的一个参数,只有退出程序时该值才为0
}
//回调函数的定义
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc //定义设备上下文句柄
PAINTSTRUCT ps //一个结构体
RECT rect //定义一个矩形
switch (message)
{
case WM_CREATE: //窗口刚刚创建好时发送的消息
//PlaySound (TEXT ("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC) //播放声音
return 0 //返回
case WM_PAINT: //窗口重画时的消息
hdc = BeginPaint (hwnd, &ps) //得到设备上下文句柄
GetClientRect (hwnd, &rect) //得到当前客户区矩形
DrawText (hdc, TEXT ("Hello, Windows 98!"), -1, &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER) //输出引号里文字,后面参数定义它输出的方式
EndPaint (hwnd, &ps) //释放设备上下文句柄
return 0
case WM_DESTROY: //窗口销毁时的消息
PostQuitMessage (0) //退出程序
return 0
}
return DefWindowProc (hwnd, message, wParam, lParam) //对没有定义处理方法的消息,系统默认处理
}
那需要学VC。确切的说是要学MFC。
MFC编图形化程序也是很麻烦的,难学,繁琐。
其实你可以再学Java或者C#。
Java本身也不适合做图形化应用程序,但是比MFC要简单得多。
C#则是当前做图形化程序最简单高效的了,不需要编程单靠鼠标拖拽就能做出图形界面。特别是C#的WPF图形框架更是把图形化编程简化如神行到了极限。
所以强烈建议学C#。
C#语言综合Java和C++的优点。Java和C++都源自C语言。所以学C#之前最好先学一下C++,C、C++、C#可以说是一脉相承,向下兼容的。
总之,学图形化编程比较好的顺序是:
C(结构化语言渣哗,入门)->C++(面向对象语言,铺垫) ->C# (享受快速图形化开发吧)
忘解释那几个名词了,补上:
集成瞎姿开发环境:就是IDE,一类开发工具。
你的代码本来可以直接在记事本里写完,然后命令行下调用编译器编译就能执行了。
集成开发环境将代码编辑、代码编译执行、代码调试功能集成在一起(甚至集成更多功能),使开发人员的开发变得更加高效。比如Visual C++ 6.0就是一个集成开发环境,还有Eclipse、CodeBlocks、Visual Studio等都是。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)