windows程序设计是什么啊

windows程序设计是什么啊,第1张

windows程序指有视窗的程序,例如IE浏览器。

使用者一运行视窗程序,就能看到一个新窗出现,然后把鼠标移动到视窗范围内的某个地方,揿一下,或快揿两下左键或右键或中键,或转鼠标轮,程序就会去执行某项任务,例如d出新的会话窗,接受选择,或接受键盘输入,如果你什么都不碰,程序就会等待。这种有视窗,并通过事件(鼠标,键盘的触动)控制驱动的的程序,就叫windows程序--视窗程序。

视窗程序最原始的写法,可以是在屏幕上(x1,y1)->(x2,y1)->(x2,y2)->(x1,y2)->(x1,y1) 画一个方块,然后用循环语句不断检查鼠标位置(mx1,my1),如果鼠标位置落在方块内,监察鼠标动作,根据鼠标动作决定下一步行动,还要监察这个方块是不是被别的窗遮了,全遮了还是半遮了,还是遮了又露出来,要把没遮的部分重画。

稍复杂一点的窗,你看要画多少东西,要监察控制多少东西,全都从画方块画直线开始,工作量太大了。

VC++ 里有很多现成的函数,可以免除我们从原始的abc,123开始写起。Visual Studio 可以替我们搭框架(写程序)。减轻了我们的工作量,提高了编程效率。

VC++ 本身就是为写视窗程序用的。

c语言不是专为写视窗用的,它的库程序与VC++不同。所以写视窗程序要用VC++。

windows程序,除用Visual VC++ 外,用Visual BASIC 也可以。据说,MS XCEL就是用Visual BASIC 写的。

使用下拉列表或组合框,用户可以在列表中选择互斥的值。 用户只能选择其中一个选项。使用标准的下拉列表,用户只能在列表中进行选择,但是如果加上组合框,他们也可以输入列表中没有的选项。

下列这几点需要明确:

思考以下问题:

除了以上适用于下拉列表的原则,可编辑式下拉列表还需要注意以下几点:

对于下拉列表, 列表中的选项数量不是选择控件的决定因素 ,它们可能只有一个,也可能成千上万。 可编辑式下拉列表的项目数量多少都无所谓,因为用户也可以输入一个不在列表中的值。 而且下拉列表可以用于输入数据,所以可能无法事先知道项的数量,也可能无法限定数据的值。 始终为可编辑式列表框预留出至少三个项目高度的屏幕空间。

下拉列表和及其组合框有以下几种应用范例:

下拉列表 是一个标准的下拉式列表框,包含一组固定的预设值。当列表收起时,只有选中项目是可见的。用户点击下拉按钮时,展现所有选项。如果要变更选项,用户需要点击展开列表,然后选择另一个选项。

预览式下拉列表 是可以预览选择结果以帮助用户进行选择的下拉列表。

可编辑式下拉列表 是一个下拉组合框,它允许用户输入一个下拉列表中不存在的值。

可编辑式列表框 是一个常规组合框,允许用户输入在下方列表框中不存在的值。

提示符是放置在可编辑下拉列表中作为其默认值的标签或短指令。 与静态文本不同的是,一旦用户在组合框中键入某些内容或获得输入焦点,提示符就会从屏幕上消失。

以下情况,可以使用提示符:

不要仅仅使用提示符来指导用户从列表中选择某些内容或单击按钮。 例如,像“选择一个选项”或“输入一个文件名”然后单击“发送”这样文字的提示符是不必要的。

使用提示符的时候,注意:

在提到下拉列表时:

在提到组合框时:

就是利用windows的应用程序接口(API),编写windows程序。

一般用C/C++;

如果用c,就是直接用这些API。

如果用C++,就用MFC(微软基础类库,封装了windows 的API)。

一、主体不同

1、Windows程序设计:基于MFC类库进行的程序开发设计。

2、C语言:是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。

二、特点不同

1、Windows程序设计:以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。

2、C语言:仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性。

三、优缺点不同

1、Windows程序设计:包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。专心的考虑程序的逻辑,而不是这些每次编程都要重复的东西,但是由于是通用框架,没有最好的针对性。

2、C语言:依靠非常全面的运算符和多样的数据类型,可以轻易完成各种数据结构的构建,通过指针类型更可对内存直接寻址以及对硬件进行直接 *** 作,因此既能够用于开发系统程序,也可用于开发应用软件。

参考资料来源:百度百科-c语言

参考资料来源:百度百科-MFC

消息是线程、进程之间的通信方式,一个进(线)程,发出消息,接收进(线)程接收到消息之后,进行相应动作,做出反应。对于有的 *** 作系统,消息是进(线)程之间唯一的通信渠道。传递消息的信使,通常是 *** 作系统。

消息有点儿像人们之间的通信。

消息有向特定进(线)程发出的,也有像所有进(线)程发出的,后者称作广播。

消息的内容,通常是一些文本。其意义,是由程序自己约定的。也可以是密码。

有些消息是通用的,比如系统消息。电脑关机时,系统会向所有进(线)程发出将要关机的信息,进(线)程接到信息之后,通常立即保存数据,关闭自己。否则,系统过了一定时间之后,会强制关闭所有进(线)程,但是会造成进(线)程数据丢失。

所谓“消息循环”,实际是程序循环。

即Windows 中有一个系统消息队列,对于每一个正在执行的Windows应用程序,系统为其建立一个“消息队列”,即应用程序队列,用来存放该程序可能创建的各种窗口的消息。应用程序中含有一段称作“消息循环”的代码,用来从消息队列中检索这些消息并把它们分发到相应的窗口函数中。

《Window程序设计》上册复习:

__stdcall __cdecl WideCharToMultiByte MultiByteToWideChar

多字节字符集与Unicode:IsTextUnicode

TCHARh _tcslen(wcslen and strlen)

TCHAR(wchar_t and char) _T,_TEXT,L

Unicode/Ansi : lstrlen lstrcpy lstrcpyn lstrcat lstrcmp lstrcmpi

vsprintf wsprintf wvsprintf _vsntprintf

va_list, va_start, va_arg, va_end

PlaySound ScrollWindow ScrollDC

InvalidateRect InvalidateRgb

GetTextMetrics(get text metrics from dc) GetTextFace(Set)

GetClientDC GetWindowDC

SetScrollRange SetScrollPos SetScrollSizes SetScrollInfo

WM_PAINT:BeginPaint函数调用使dc区域变为有效

CreateCompatibleDC GetDeviceCaps SetTextAlign

图形绘制函数:SetPixel(GetPixel)

TextOut

LineTo Polyline(no fill)/Polygon(fill) PolylineTo PolyPolyline Arc

PolyBezier PolyBezierTo

ArcTo AngleArc PolyDraw

Ellipse Rectangle RoundRect Chord Pie

CreatePen CreatePenIndirect GetObject SelectObject DeleteObject(hPen)

SetBkColor SetTextColor SetBkMode SetROP2(GetROP2) SetPolyFillMode

CreateBrushIndirect CreateSolidBrush CreateHatchBrush

CreatePatternBrush CreateDIBPatternBrushPt(create brush base on bitmap)

SetMapMode(GetMapMode) SetWindowExtEx DPtoLP LPtoDP

GetClientRect

SetViewportOrgEx SetWindowOrgEx

区域和剪裁:

FillRect FrameRect InvertRect(矩形所有象素颜色翻转)

SetRect OffsetRect InflateRect SetRectEmpty CopyRect

IntersectRect(交集) UnionRect IsRectEmpty PtInRect

CreateRectRgn(创建一个区域时,取得该区域的句柄) CreateRectRgnIndirect

CreateEllipticRgn CreateEllipticRgnIndirect

CreatePolygonRgn CombineRgn

区域的句柄可用于下4个绘图函数:FillRgn FrameRgn InvertRgn PaintRgn

(you must use DeleteObject(hRgn) to delete after not use the region which you create)

键盘:GetKeyState GetAsyncKeyState GetKeyNameText

ScreenToClient ClientToScreen CreateCaret SetCaretPos ShowCaret

windowclass cs | = CS_DBLCLKS;

鼠标:WM_NCHITTEST ShowCursor GetCursorPos(SetCursorPos)

SetCapture ReleaseCapture

SetWindowLong(GetWindowLong) SetClassLong(GetClassLong)

SetFocus(GetFocus) GetDlgItem WM_SETFOCUS WM_KILLFOCUS

SystemParametersInfo DrawBoxOutline

计时器:SetTimer KillTimer WM_TIMECHANGE

GetLocalTime(SetLocalTime) GetSystemTime(SetSystemTime)

GetDateFormat GetLocaleInfo

GetParent GetDlgCtrlID IsWindowVisible

按钮:BS_OWNERDRAW

通知码:BN_SETFOCUS 发送消息:BM_SETCHECK BM_SETIMAGE

GetSysColors(SetSysColors) ScrollWindow

按钮绘制:WM_CTLCOLORBTN 自画风格:BS_OWNERDRAW WM_DRAWITEM消息

WM_CTLCOLORBTN:很少使用

WM_ERASEBKGND:return TRUE;

WM_PAINT:窗口不响应

WM_DRAWITEM:自画

SetClassLong (hWnd, GCL_HBRBACKGROUND, (LONG)CreateSolidBrush())

WM_CTLCOLORSCROLLBAR(返回背景颜色)

WM_CTLCOLORSTATIC(用SetTextColor和SetBkColor设置前景和背景颜色)

WM_SYSCOLORCHANGE

文本编辑框:通知码:EN_SETFOCUS EN_KILLFOCUS EN_CHANGE EN_UPDATE

消息:EM_GETSEL EM_SETSEL EM_GETLINECOUNT EM_LINEINDEX

EM_LINELENGTH EM_GETLINE

重画标志:WM_SETREDRAW(TRUE/FALSE)

列表框:LB_RESETCONTENT LB_DELETESTRING LB_ADDSTRING LB_INSERTSTRING etc

强大的消息:LB_DIR

通知码:LBN_SELCHANGE LBN_KILLFOCUS etc GetEnvironmentStrings

GetCurrentDirectory

菜单及资源:DrawIcon AnsiNext LockResource(LoadResource(FindResource))

CreateMenu AppendMenu DeleteMenu InsertMenu ModifyMenu RemoveMenu

EnableMenuItem IsClipboardFormatAvaliable

DrawMenuBar GetSubMenu GetMenuItemCount GetMenuItemID CheckMenuItem

GetMenuString GetMenuState DestroyMenu TrackPopupMenu LoadMenu SetMenu

加速键:LoadAccelerators RegisterHotKey TranslateAccelerator

模态对话框:DialogBox DialogBoxIndirect DialogBoxParam

处理WM_INITDIALOG消息,退出用EndDialog

SendDlgItemMessage CheckRadioButton CheckDlgButton IsDlgButtonChecked

非模态对话框:CreateDialog CreateDialogIndirect ShowWindow SetDlgItemText

消息处理,在主窗口消息循环中加入:IsDialogMessage

通用对话框:GetOpenFileName GetSaveFileName ChooseColor

FindText ReplaceText

MSDN Examples:Using Common Dialog Boxes

RegisterWindowMessage

内存分配:GlobalAlloc GlobalReAlloc GlobalSize GlobalFree(GlobalHandle(p));

GlobalLock GlobalUnlock CopyMemory

剪贴板:OpenClipboard EmptyClipboard SetClipboardData CloseClipboard

GetClipboardData IsClipboardFormatAvailable EnumClipboardFormats

CountClipboardFormats RegisterClipboardFormat GetClipboardFormatName

剪贴板Hook:SetClipboardViewer(hWnd)-->WM_DRAWCLIPBOARD)

UnHook: ChangeClipboardChain

GetClipboardViewer WM_CHANGECBCHAIN WM_DRAWCLIPBOARD

《Window程序设计》下册复习:

打印机:CreateDC PrintDlg StartDoc StartPage EndPage EndDoc

EnumPrinters GetVersion(Ex) WM_SETTINGCHANGE WM_INITMENUPOPUP

OpenPrinter PrinterProperties CreateIC GetPrinterDC

SetAbortProc(use callback to abort print task) WM_SETTINGCHANGE

设备有关位图:

CreateBitmap CreateBitmapIndirect

BitBlt StretchBlt SetStretchBltMode PatBlt

SetBitmapBits GetBitmapBits

CreatePatternBrush CreateBrush CreateBrushIndirect

WM_DISPLAYCHANGE CreateCompatibleDC(内存dc作图原理)

GetSystemBmenu AppendMenu:插入位图菜单 GetTextExtentPoint32

LockWindowUpdata(GetDesktopWindow Or Other Or NULL) GetDCEx

设备无关位图:

BITMAPFILEHEADER BITMAPCOREHEADER SetFilePointer SetEndOfFile

CreateFile GetFileSize CloseHandle SetCursor ShowCursor

SetDIBitsToDevice StretchDIBits 掌握dib格式及显示方法

CreateDIBitmap(create ) SetDIBits(init pixels)这两个函数从dib到ddb

GetDIBits 从ddb到dib

DIB: 文件或内存块

DDB:gdi位图对象,并由位图句柄表示

CreateDIBSection :create a DIB,reture a handle of dib data section,not gdi

(windows重要函数:指向设备无关位图,但是返回的句柄又可用设备有关函数的 *** 作)

显示dib的三种方法

①用SetDIBitsToDevice或StretchDIBits将dib直接显示在屏幕,速度慢

②用CreateDIBitmap和SetDIBits把DIB转换成DDB,然后用BitBlt或StretchBlt显示

③用CreateDIBSection创建DIB部分,然后使用BitBlt或StretchBlt显示

GdiFlush

调色板:CreatePalette SelectPalette RealizePalette UpdateColors

本章不太感兴趣,以后在网络上看到相关文章时再去学习,:)

文本与字体:

TrueType:轮廓字体技术

TextOut TabbedTextOut ExtTextOut DrawText DrawTextEx

SetTextColor SetBKMode SetBkColor SetTextCharacterExtra

GDI 字体:点阵,笔画,TrueType

设备字体:硬件内置的设备字体(打印机)

CreateFont CreateFontIndirect(旋转字体)

SetGraphicsMode SetMapperFlags ModifyWorldTransform

EnumFontFamilies SetTextJustification

GetDialogBaseUnits GetTextExtentPoint32(get text width and height)

程序需仔细调试,特别是那个换行打印的程序

ExtCreatePen(use logical brush) BeginPath(这两个函数中间画轮廓字)EndPath

StrokePath StrokeAndFillPath

元文件:CreateMetaFile CloseMetaFile DeleteMetaFile/DeleteFile

PlayMetaFile SetMetaFileBitsEx

本章不太感兴趣,以后在网络上看到相关文章时再去学习,:)

多文档界面:程序需要仔细调试,重要的咚咚

hClient=GetWindow(hFrame,GW_CHILD)

一个视窗类:MDICLIENT

五个函数:DefFrameProc DefMDIChildProc TranslateMDISysAccel

两个结构体:CLIENTCREATESTRUCT(这个客户视窗覆盖框架视窗的显示区域 )

MDICREATESTRUCT(以一个指向此结构的指标为参数将讯息WM_MDICREATE发送给客户视窗,用来创建子视窗)

十二个消息:

WM_MDICREATE 创建子视窗的消息,返回这个子窗口句柄

WM_MDIGETACTIVE 取得活动的子窗口句柄

WM_MDIDESTROY 销毁MDI子窗口(句柄可通过上消息取得)

WM_MDITILE

WM_MDICASCADE

WM_MDIICONARRANGE

WM_MDIRESTORE 恢复子窗口状态

WM_MDISETMENU 设置框架菜单

线程:CreateThread _beginthread

CRITICAL_SECTION EnterCriticalSection LeaveCriticalSection

DeleteCriticalSection CreateEvent ResetEvent WaitForSingleObject

每个线程有自己的堆栈 TlsAlloc TlsSetValue() TlsGetValue TlsFree

__declspec(thread) extern "C"缘由(C要大写!)

DLL:

dll入/出口点: DLL_PROCESS_ATTACH,etc

DLL共享内存:为dll创建共享节。#pragma data_seg("shared")

/section:shared,RWS

LoadLibrary FreeLibrary GetProcAddress

声音与音乐:mciSendString waveOut

领略Internet:

以上就是关于windows程序设计是什么啊全部的内容,包括:windows程序设计是什么啊、Windows桌面应用程序设计指南(控件篇5-下拉列表&组合框)、windows程序设计用的是什么语言等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10214125.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存