标题:All about windows programming
只看楼主
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
得分:0 

9搂,10楼的帖子已经回答了8楼的提问。 handle 为什么翻译为句柄,我不得而知,我认为这个蹩脚的翻译是造成理解困难的一个原因。将它翻译为操作识别比较可以理解,但缺少了文采。但句柄这个单词却让我无法揣摩其意思。

我的个人观点,放弃句柄这个单词。那个最初翻译的人给大家制造了困难。其实很多东西没有必要翻译成中文。handle 就是 handle.


自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2004-08-28 01:42
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
得分:0 

以下是字典中handle的解释:(可能因为candle的关系吧,我用惯了“扶手”的意思)

handle n. 柄, 把手, 把柄, 口实, 手感 n. [计]句柄

实例化即是C++中所谓的对象化,一个类是不占空间的,而用类创建一个对象就是对象化,对象占空间,而VC中的系统类捆绑了原来的API,用这些类(或者API)对象化一个占空间的实例就叫实例化。 //说错了请指正……

[此贴子已经被作者于2004-10-01 10:35:40编辑过]

2004-08-28 02:00
风中涟漪
Rank: 1
等 级:新手上路
帖 子:234
专家分:0
注 册:2004-8-9
得分:0 

Win32 Application - Step 1 of 1

1. An empty project 只生成四个文件(live41.dsp、live41.dsw、live41.ncb、live41.opt)和一个空文件夹Debug。

2.A simple Win32 Application 除了生成上面的四个文件和文件夹外,还有ReadMe.txt、StdAfx.cpp、StdAfx.h、live41.cpp。

3.A typical "Hello World!" application 除了1、2包含的,还有资源文件live41.rc,图标文件live41.ico,还有live41.html、live41.h、resource.h、small.ico。

以上是生成三个选项的区别,其中live41是你的工程名。

[此贴子已经被作者于2004-10-01 12:36:35编辑过]


2004-08-28 17:26
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
得分:0 

周六,周日,都登录不上,接下来几天自己忙,没登录,所以让大家久等了。

下面是第二个程序:

大家先打开VC,找到上一个程序的目录,点击 *。dsp. 就可以打开上一个程序,拷贝下面这个程序,再全选当前打开的程序,然后ctrl+v, 就将拷贝的程序粘贴上去了。这个程序主要阐述一些 GDI Api,

#include <windows.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nShowCmd) { HWND hwnd; MSG Msg; WNDCLASS wndclass; char lpszClassName [] = "Windows"; char lpszTitle [] = "Windows Demo";

wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); wndclass.hInstance = hInstance; wndclass.lpfnWndProc = WndProc; wndclass.lpszClassName = lpszClassName; wndclass.lpszMenuName = NULL; wndclass.style = CS_HREDRAW | CS_VREDRAW;

if(!RegisterClass(&wndclass)) { return 0; }

hwnd = CreateWindow(lpszClassName, lpszTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); ShowWindow(hwnd, nShowCmd); UpdateWindow(hwnd); while(GetMessage(&Msg, NULL, 0, 0)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } return Msg.wParam; }

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { static POINT aptFigure[10] ={10,70, 50,70, 50,10, 90,10, 90,50, 30,50, 30,90, 70,90, 70,30, 10,30}; static int cxClient, cyClient; HDC hdc; int i; PAINTSTRUCT ps; POINT apt[10]; // 换算为运用区域

switch(message) { case WM_SIZE: cxClient = LOWORD(lParam); cyClient = HIWORD(lParam); return 0; case WM_PAINT: hdc = BeginPaint(hwnd, &ps);

SelectObject(hdc, GetStockObject(GRAY_BRUSH)); for(i = 0; i<10; i++) { apt[i].x = cxClient * aptFigure[i].x / 200; apt[i].y = cyClient * aptFigure[i].y / 100; }

SetPolyFillMode(hdc, ALTERNATE); Polygon(hdc, apt, 10);

for(i = 0; i<10; i++) { apt[i].x += cxClient / 2; }

SetPolyFillMode(hdc, WINDING); Polygon(hdc, apt, 10);

EndPaint(hwnd, &ps); return 0;

case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hwnd, message, wParam, lParam); }


自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2004-09-02 04:16
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
得分:0 

论坛不是登陆不上,我也是经常这样,刷新多几次就上得到了。

我运行了,看到区域,可以说说具体哪个函数和变量控制哪个区域吗? 另外,GDI是图形界面吧?为什么不用头文件?

[此贴子已经被作者于2004-09-04 21:24:57编辑过]

2004-09-02 11:19
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
得分:0 

GDI(Graphics Device Interface 图形设备接口 ), 也就是说,他们是一些接口程序,这些程序的存在使得windows 应用程序的与设备无关性成为可能。

一个很重要的概念便是应用程序的设备无关性。我们知道计算机是由很多硬件,以及外设组成的。而软件是用来操作这些硬件的。独立于硬件的软件是没有的,也是没有意义的。但是由于硬件的多样性,使得软件编程产生了困难,因为如果软件要与硬件相关,那他必须考虑很多情况,对潜在的硬件的可能都必须考虑,这对于编程员来讲困难就太大了,于是有了这样一个想法,接口程序与外设对话,而我们只要在程序中应用接口程序就可以了,这样我们就不需要去考虑外设的多样性,这就是 windows 程序外设无关性。


自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2004-09-08 03:00
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
得分:0 

下面来谈谈关于键盘与鼠标消息的响应,键盘与鼠标是windows 程序中必定会碰到的话题,关于文字也将在这次的程序中略微带过。

分别来讲键盘与鼠标,先来讲键盘。下面是编程的一些背景知识:

当用户按下或释放一个键时,到底发生了什么呢?或者说应用程序如何来响应的呢?

首先,当用户按下或释放一个键时,键盘 KEZBOARD.DRV 中的键盘中断处理程序对所击键进行编码,并调用windows 的用户模块 USER。EXE中的有关程序来生成键盘消息,最终发送到应用程序的消息队列中等待处理,而处理这些消息则是由应用程序的窗口过程来具体完成的。

键盘上的每个键都对应一个扫描码,它是依赖于具体设备的,是唯一的标识值。应用程序是与设备无关的,所以应用程序处理的是虚拟码,虚拟码与扫描码有一一对应的关系,虚拟码是由windows 系统定义的与设备无关的键的唯一标识。当我们敲击键盘时,设备驱动程序在截取键的扫描码后把它转换为虚拟码,所以键盘的输入,将产生一条消息,它含有扫描码,虚拟码以及与击键有关的消息,设备驱动程序把这些消息放到系统的消息队列中去, windows 从系统消息队列中取出这条消息,再把它发送到相应的线程消息队列中去,最后由窗口过程从线程消息队列中取出键盘消息,进行后续处理。

虚拟码作为与设备无关的键盘编码,他的值存放在键盘消息的 wParam 参数中,用以标识哪个键被按下或释放。

常用虚拟码如: VK_0 ~ VK_9 (0~9) VK_A~VK_Z (A~Z) VK_LEFT 左箭头键。。。 等等,相关虚拟码我这里不一一列出了,大家可以网上查 MSDN

windows 支持两种字符集:OEM 和 ANSI. OEM是IBM 字符集,windows 提供了几个用于转换这两种字符集的函数,如: AnsiToOem 将ANSI 字符串转化为 OEM 字符串

AnsiToOemBuff 将缓冲区中的 ANSI 字符串转化为 OEM字符串

OemToAnsi

OemToAnsiBuff

具体程序下次给出


自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2004-09-08 04:28
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
得分:0 

IrfanView is a grafisch Software, what is developed from Irfan.

see this link http://www.irfanview.com/

大家有兴趣先下载 IrfanView 这款看图软件,这是他完全个人开发的软件,Irfan 也是一位非常热情的程序员,与他不多的几次email 交流中,得知一些 该软件开发情况,考虑到商业机密,对软件开发的细节不做多谈也是可以理解的。不过他的建议也是 完全采用 winapi , 而非 MFC。

我们的项目开发的目标也是尽可能靠拢 IrfanView 的这款软件。


自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2004-09-08 05:03
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
得分:0 

我不知道这里如何上传文件,要不然可以将我个人写的一个简单看图应用程序发上来。

如果朋友有兴趣,可以向我索取。


自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2004-09-08 05:16
C++大粉丝
Rank: 4
等 级:贵宾
威 望:10
帖 子:477
专家分:0
注 册:2004-4-23
得分:0 
呵呵~~好热闹呀!

I am a big fan of c plus plus.
2004-09-08 15:16



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-4546-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.166347 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved