当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 一个典型的Win32窗口应用程序的框架是这样的: 程序入口点(WinMain函数)-->注册窗口类(调用RegisterClass函数或RegisterClassEx函数)-->创建主窗口(调用CreateWindow函数或CreateWindowEx函数)-->显示主窗口(...
 

 

    摘要:c:\program files\microsoft visual studio\vc98\include\winsock2.h(148) : error c2011: timeval : struct type redefinitionc:\program files\microsoft visual studio\vc98\include\winsock2.h(204) : error c20......
    摘要:使用tangram构造你自己的软件开发平台 生产第一个tangram程序主窗口 安装tangram开发包后,打开visual studio .net 2003 ide,选择新工程得到如下对话框: 选择tangram application with com&.net support项目,输入工程名称,生产你的第一个tangram程序,这是一个mfc based应用程序框架......


从Windows消息的角度看窗口应用程序的运行过程

    一个典型的win32窗口应用程序的框架是这样的:    程序入口点(winmain函数)-->注册窗口类(调用registerclass函数或registerclassex函数)-->创建主窗口(调用createwindow函数或createwindowex函数)-->显示主窗口(调用showwindow函数)-->更新主窗口(调用updatewindow函数)-->进入消息循环(getmessage.translatemessage.dispatchmessage)并处理各种windows消息(窗口过程函数)-->程序出口点(winmain返回).就像下面这个例子一样:

int winapi _twinmain( hinstance hinstance,hinstance,lptstr lpcmdline,int ncmdshow){ //注册窗口类 wndclassex wcex; wcex.cbsize   = sizeof(wndclassex);  wcex.style  = cs_hredraw | cs_vredraw; wcex.lpfnwndproc = (wndproc)wndproc; wcex.cbclsextra  = 0; wcex.cbwndextra  = 0; wcex.hinstance  = hinstance; wcex.hicon   = null; wcex.hcursor  = loadcursor(null, idc_arrow); wcex.hbrbackground = (hbrush)(color_window+1); wcex.lpszmenuname = null; wcex.lpszclassname = szwindowclass; wcex.hiconsm  = null; registerclassex(&wcex); //创建主窗口 hwnd hwnd = createwindowex(0,szwindowclass, szwindowtitle, ws_overlappedwindow,  128, 96, 512, 480, hwnd_desktop, null, hinstance, null);  if (!hwnd)  return false; //显示并更新主窗口 showwindow(hwnd,ncmdshow); updatewindow(hwnd); // 进入消息循环 msg msg; while (getmessage(&msg, null, 0, 0))  {  translatemessage(&msg);  dispatchmessage(&msg); } return msg.wparam; //程序退出} 【程序编程相关:MFC界面包装类(多线程时成员函数调用的

#include<windows.h>#include<tchar.h>//窗口类名与窗口标题tchar szwindowclass[]=_t("hellowindows");tchar szwindowtitle[]=_t("this is the main window");//窗口过程函数lresult callback wndproc(hwnd hwnd, uint msg, wparam wparam, lparam lparam){ //logmessage(logfile,msg,wparam,lparam);// switch(msg) { case wm_destroy:  postquitmessage(0);  return 0; default:  return defwindowproc(hwnd,msg,wparam,lparam); }} 【推荐阅读:《向其他程序的ListView控件发送L

    这个例子很十分简单,只是显示一个窗口就完事了;不过麻雀虽小,五脏俱全,它基本上可以作为一个win32窗口程序的框架了.下面来看它的窗口过程wndproc,它只处理了一个消息:wm_destroy,其余的消息都交给了windows去处理(调用defwindowproc).对于一个实际的windows程序来说,要在窗口过程中处理的消息会很多;然而windows消息成百上千,无论你处理多少消息,剩下的你还是得调用defwindowproc交给windows系统去处理.这次我们就来看看,从程序启动到退出,defwindowproc到底要帮我们做多少的工作.    实验的思想很简单,把所有传递给窗口过程的消息都记录在一个log文件中,我们就可以察看在一个程序的生命过程中的所有消息了.在上面的例子中,我们在窗口函数wndproc的最开始调用一个方法(形如注释掉的那一行:logmessage(logfile,msg,wparam,lparam)),把传递来的消息类型,wparam参数,lparam参数顺序都记录下来,就会形成一个windows消息log文件了.    下面是两次实验的结果(假设上面的例子编译后得到hellowin.exe):     实验一:在文件管理其中选中hellowin.exe,按回车键启动,显示主窗口后马上按下alt+f4把它关闭,得到的log文件如下:


...   下一页
 ·winsock程序设计入门(1)     »显示摘要«
    摘要:作者:nishant s原文链接:asp">http://www.codeproject.com/internet/winsockintro01.asp一、简单的tcp服务器介绍winsock api是一套供microsoft windows操作系统使用的套接字程序库,它最初基于berkeley套接字,但是其中加入了一些microsoft的特殊改动。在这篇文章中,我要试着给你介绍如何使用winso......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE