<noframes id="ixm7d"><noframes id="ixm7d"><rt id="ixm7d"><delect id="ixm7d"></delect></rt><noframes id="ixm7d"><rt id="ixm7d"><rt id="ixm7d"></rt></rt><rt id="ixm7d"></rt> <noframes id="ixm7d"><rt id="ixm7d"><delect id="ixm7d"></delect></rt><delect id="ixm7d"></delect><bdo id="ixm7d"></bdo><rt id="ixm7d"></rt><bdo id="ixm7d"></bdo><noframes id="ixm7d"><rt id="ixm7d"><rt id="ixm7d"></rt></rt><rt id="ixm7d"><rt id="ixm7d"></rt></rt><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><rt id="ixm7d"></rt> <noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><noframes id="ixm7d"><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><noframes id="ixm7d"><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d">

windows域的好處

2023-06-17

第一篇:windows域的好處

魔域的裝備怎么鑒定

魔域的裝備怎么鑒定用自動尋路找鍛造所,那有鑒定師.

最好去新手導師那拜師,升的很快.要不如果你是富人,就開祝福;如果你是窮人,就帶一個法bb(一定要學風珠),一個戰bb(和體),然后組隊練級

你先找個級數高點的做你的師傅不過你要記住你拜完了師傅就不要輕易的判師 應為你一判師在要拜師你就要用師徒情深了 那個東西要用MS買的 如果你是有錢人 也可以是是 關于BB的問題你你就要去市場那去合多多的合 把星合的的越高越好 升級 你要是法師你就去打怪你就去打看怪名是紅色的找個戰士BB 一般戰士BB比你自己的級數高點 你可一和戰士BB和體 等到X劈的時候你可一去打下黑名的怪 我經常這樣越級打怪 那益處嗷嗷的 你就等著升級吧 前提 你不要被那個黑名的怪碰到呀 那會死人的 呵呵 祝你升級快樂啊 今天就寫這些吧 !

到雷鳴的鑒定師用100金幣就可以鑒定啦~一定幾率出現鑒定失敗,寶寶天賦技能中也有鑒定天賦跟鑒定師的一樣,如果你想100%鑒定成功就買魔石鑒定卷

玩魔域,魔域的裝備怎么鑒定??康氖鞘裁?

兄弟。知道的回一聲。誰都想要極品+12帶2D的吧!西西。我都是。額是窮人。買是買不起拉!怎么辦?。餓去趟迷宮。身上就裝滿了裝備?;貋砗?。如果是你們。是不是第一時間去鑒定啊!。其實這種做法是錯的。應該把這些裝備先存起來。最好是過幾天去鑒定。(不要問為什么)。鑒定時還要注意的是。要分類。法師的放在一起,鑒定材料《魔域的裝備怎么鑒定》。戰士的放在一起。鑒定時。注意啊!關鍵時刻到了。前面的5件最好是法師裝備。不是本人看不起法師

因為市場上確實是法師的裝備便宜。鑒定到第6件就換戰士裝備去鑒定。因為第6件到第9件必出一件上品

上品雖然沒什么用但比良品的要好吧。

到第14件開始全部用戰士裝備去鑒定,因為第14到20件這其中很容易出精品!運氣好的話。極品+12帶D的。我也只鑒定過一件戰鞋。哎。悲哀。上品倉里一大把。還喲很多的精品拿去喂BBB了。

先寫到這咯!我還得去鑒定裝備呢。最后再補充一句。鑒定時間。最好是服務器重啟的時候。

朋友,是不是發現你有的未鑒定裝備中有的東西一鑒定就是失敗啊,再鑒定就會很容易的失敗+損壞啊,呵呵,你傷心吧,你把極品或者精品裝備給糟蹋了,真的,沒有騙你!下面,我小談下我的鑒定史:以前,我鑒定一把極品寒月,(那時候不知道怎么鑒定)于是整天去打那中怪,希望能再掉一把,結果——————沒有!而以后我就注意用不同的手法去鑒定裝備,終于,我的精品上品一件件多了起來!今天早上還鑒定一個極品帽子,一件精品衣服,兩件FS上品杖!下午呢,打兩件裝備,下機的時候去鑒定,一個是良品杖,一個精品頭!是不是有點想知道怎么回事啊?別急:且聽我慢慢道來!

第一:不要一有裝備就去鑒定!等它多了再去!

第二:不要去那隨便一放就OK!要像你+裝備一樣!注意那道光的位置!

第三:不要等服務器剛開就去鑒定,或者那里沒有多少人的情況下去鑒定!!這點一定注意!

第四:一次不成功,就別再鑒定同一件東西!多開幾次鑒定的那個窗口,然后取消,不要望里面放東西!

第五:(也要注意哦)如果你想要那個東西就不要先鑒定那件。先放你不在意的東西!等它一下就成功,不管他是什么品的,再結合上面的經驗放你想要的東西!

西西,這點經驗,不知道對大家是不是適合!厲害的高手別笑啊,也許哪里有錯誤,你厲害你就指點下!經驗大家共同分享,不對之處還望海涵。

第二篇:客戶端不能加入域的解決方法和步驟

客戶端不能加入域?解決資料整合

加入域出現以下錯誤,windows無法找到網絡路徑,請確認網絡路徑正確并且目標計算機不忙或已關閉? 核心提示:

在輸入管理賬號和密碼并點擊“確定”按鈕后,系統卻提示“找不到網絡路徑”,該計算機無法加入域。

故障現象:單位有一臺運行Windows XP系統的辦公用計算機,由于工作需要準備將它加入到已經建立好的基于Windows Server 2003系統的域中。按照正常的操作步驟進行設置,在“系統屬性”的“計算機名”選項卡中加入域的時候,系統要求輸入有權限將計算機加入域的用戶名和密碼(這表示已經找到域控制器)。然而,在輸入管理賬號和密碼并點擊“確定”按鈕后,系統卻提示“找不到網絡路徑”,該計算機無法加入域。

解決方法:

由于客戶端計算機能夠找到域控制,因此可以確定網絡的物理連接和各種協議沒有問題。此外,由于可以在該計算機上找到域控制器,說明DNS解析方面也是正常的。那為什么能找到域控制器卻又提示無法找到網絡路徑呢?這很可能是未安裝“Microsoft網絡客戶端”造成的。在“本地連接 屬性”窗口的“常規”選項卡中,確保“Microsoft網絡客戶端”處于選中狀態,然后重新執行加入域的操作即可。

“Microsoft網絡客戶端”是客戶端計算機加入Windows 2000域時必須具備的組件之一,利用該組件可以使本地計算機訪問Microsoft網絡上的資源。如果不選中該項,則本地計算機沒有訪問Microsoft網絡的可用工具,從而導致出現找不到網絡路徑的提示。本例故障的解決方法啟示用戶,為系統安裝常用的組件和協議可以避免很多網絡故障的發生,

計算機本地連接自帶的防火墻也應該關閉.以避免應該防火墻的問題造成無法與域控制器通信.服務端(域控制器):Microsoft網絡文件和打印共享和網絡負載平衡沒選擇上去, 一定要選擇上Microsoft網絡文件和打印共享和網絡負載平衡。

客戶端要加入域,相關的服務要開始:

Computer Browser

Workstation

Remote Procedure Call (RPC)

TCP/IP NetBIOS Helper

Windows Management Instrumentation

這些客戶端服務是否開啟,TCP/IP NetBIOS Helper和Workstation一定要開啟

并非都是客戶端問題,我的問題出在DC的安全策略上,是因為啟用了DC上的組策略->安全選項中的“帳戶: 使用空白密碼的本地帳戶只允許進行控制臺登錄”,在客戶端加入域時用戶名的密碼正好是空白的,過了會兒就出現了“找不到網絡路徑”,所以應該輸入有密碼的域賬戶,或者禁用這條安全策略。

另一個問題是安裝AD時更改了數據庫NTDS文件夾、SYSVOL文件夾安裝路徑,在虛擬機上做會容易導致AD出錯,DNS日記里會告訴找不到AD。

dns中的srv記錄可能沒有創建好:

在安裝的dns服務器上?

1 重新啟動net stop netlogon && net start netlogon服務

2 開始--運行--cmd--ipconfig /registerdns

3 重新啟動電腦

打開事件查看器,認真檢查DC和DNS服務器相關信息,看有沒有警告、錯誤的事件。

檢查步驟:

1. 確認域內有DNS服務器,并能夠正常工作,我們建議您將DC和DNS服務器配置一臺計算機。

2. 使用本地管理員帳號登錄到出現問題的客戶端,運行ipconfig /all 檢查TCP/IP協議的配置是否正確,請把主DNS服務器指向域內的DNS服務器。

3. 在域控制器上,運行ipconfig /all 檢查TCP/IP協議的配置是否正確,請把主DNS服務器指向PDC。

4. 在Windows Server 2003 中配置 DNS 更新功能,利用 DNS 更新功能,DNS 客戶端計算機便能夠注冊到DNS 服務器并在每次發生更改時通過 DNS 服務器動態更新其資源記錄。

如何在 Windows Server 2003 中配置 DNS 動態更新,點擊下面地址去看:

http://support.microsoft.com/kb/816592/zh-cn

5. 確認在客戶端和服務器上沒有安裝防火墻或者殺毒軟件。

6. 將出現問題的客戶端退出域,然后重新加入到域中,測試問題是否依然存在。

相關問題:

網域中一臺電腦想加入到網域,DNS已經指向了域控制器(域控制器也是DNS服務器) 但卻出現以下提示:

詳細信息如下:

注意: 此信息主要供網絡管理員參考。如果您不是網絡的管理員,請通知網絡管理員您收到了此信息,記錄在文件 C:WINDOWSdebugdcdiag.txt 中。

域名 janifast 可能是一個 NetBIOS 域名。如果是這種情況,請確認域名用 WINS 正確注冊。 如果您確認此名稱不是一個 NetBIOS 域名,那么下面的信息將幫助您對 DNS 配置進行疑難解答:

當查詢 DNS 以獲得服務位置(SRV)資源記錄時遇到下列錯誤,此資源記錄用來為域 janifast 定位域控制器: 錯誤是: "DNS 名稱不存在。"

(錯誤代碼 0x0000232B RCODE_NAME_ERROR)

查詢是為 _ldap._tcp.dc._msdcs.janifast 查詢 SRV 記錄

此錯誤的一般原因包括:

- DNS SRV 記錄沒有在 DNS 中注冊。

- 下列區域的一個或多個不包括到它的子區域的代理:

janifast

。 (根目錄區域)

有關怎樣更正此錯誤,請單擊“幫助”。

hostS文件有無問題

可能是ISA防火墻引起的,要知道域控上是不能開啟防火墻的,最好設置一下策略。

跨網段加入域時,要輸入域全名,比如:test.com,不能只輸入test(不跨網段時我經常這樣輸入),否則會提示無法找到域,這是因為輸入test時,使用的是netbios協議廣播尋找域的,而netbios協議不能跨網段通信,除非配置了wins服務器。

輸入nslookup 域名,例如:nslookup abc.com看輸出DNS的server名、IP,看看輸出是否正常,能否解析到域名。

PING 一下DNS,是全名哦,像:XX.COM這樣,最主要是去DNS服務器看那個名字,然后把在本地連接的支持里修復點一下,主DNS都指向那DNS的服務器DNS ,如果這樣還不行,那要看看組策略里的計算機配置—》網絡—》DNS客戶端,看看有沒有修改過 。

客戶端的DNS設置有沒有問題,要確定是你的DC的IP,因為很多DNS設置了轉發功能,雖然能ping到域名,但是無法加入域,最好將你的客戶端DNS只設置為DC的IP。

A

1、客戶機無法加入到域?

一、權限問題。

要想把一臺計算機加入到域,必須得以這臺計算機上的本地管理員(默認為administrator)身份登錄,保證對這臺計算機有管理控制權限。普通用戶登錄進來,更改按鈕為灰色不可用。并按照提示輸入一個域用戶帳號或域管理員帳號,保證能在域內為這臺計算機創建一個計算機帳號。

二、不是說“在2000/03域中,默認一個普通的域用戶(Authenticated Users)即可加10臺計算機到域。”嗎?這時如何在這臺計算機上登錄到域呀!

顯然這位網管誤解了這名話的意思,此時計算機尚未加入到域,當然無法登錄到域。也有人有辦法,在本地上建了一個與域用戶同名同口令的用戶,結果可想而知。這句話的意思是普通的域用戶就有能力在域中創建10個新的計算機帳號,但你想把一臺計算機加入到域,首先你得有這臺計算機的管理權限才行。再有就是當你加第11臺新計算機帳號時,會有出錯提示,此時可在組策略中,將帳號復位,或干脆刪了再新建一個域用戶帳號,如joindomain。注意:域管理員不受10臺的限制。

三、用同一個普通域帳戶加計算機到域,有時沒問題,有時卻出現“拒絕訪問”提示。

這個問題的產生是由于AD已有同名計算機帳戶,這通常是由于非正常脫離域,計算機帳戶沒有被自動禁用或 手動刪除,而普通域帳戶無權覆蓋而產生的。解決辦法:

1、手動在AD中刪除該計算機帳戶;

2、改用管理員帳戶 將計算機加入到域;

3、在最初預建帳戶時就指明可加入域的用戶。

四、域xxx不是AD域,或用于域的AD域控制器無法聯系上。

在2000/03域中,2000及以上客戶機主要靠DNS來查找域控制器,獲得DC的 IP 地址,然后開始進行網

絡身份驗證。DNS不可用時,也可以利用瀏覽服務,但會比較慢。2000以前老版本計算機,不能利用DNS來定位DC,只能利用瀏覽服務、WINS、lmhosts文件來定位DC。所以加入域時,為了能找到DC,應首先將客戶機TCP/IP配置中所配的DNS服務器,指向DC所用的DNS服務器。

加入域時,如果輸入的域名為FQDN格式,形如mcse.com,必須利用DNS中的SRV記錄來找到DC,如果客戶機的DNS指的不對,就無法加入到域,出錯提示為“域xxx不是AD域,或用于域的AD域控制器無法聯系上。”2000及以上版本的計算機跨子網(路由)加入域時,也就是說,加入域的計算機是2000及以上,且與DC不在同一子網時,應該用此方法。

加入域時,如果輸入的域名為NetBIOS格式,如mcse,也可以利用瀏覽服務(廣播方式)直接找到DC,但瀏覽服務不是一個完善的服務,經常會不好使。而且這樣雖然也可以把計算機加入到域,但在加入域和以后登錄時, 需要等待較長的時間,所以不推薦。再者,由于客戶機的DNS指的不對,則它無法利用2000DNS的動態更新動能,也就是說無法在DNS區域中自動生成關于這臺計算機的A記錄和PTR記錄。那么同一域另一子網的2000及以上計算機就無法利用DNS找到它,這本應該是可以的。

若客戶機的DNS配置沒問題,接下來可使用nslookup命令確認一下客戶機能否通過DNS查找到DC(具體見

前)。能找到的話,再ping一下DC看是否通。

nslookup XXX.COM

Ping xxx.com

A

2、用戶無法登錄到域?

一、用戶名、口令、域

確保輸入正確的用戶名和口令,注意用戶名不區分大小寫,口令是區分大小寫的??匆幌掠卿浀挠蚴欠襁€存在(比如子域被非正常刪除了,域中唯一的DC未聯機)。

二、DNS

客戶機所配的DNS是否指向DC所用的DNS服務器,討論同前。

三、計算機帳號

基于安全性的考慮,管理員會將暫時不用的計算機帳號禁用(如財務主管渡假去了),出錯提示為“無法與域連接……,域控制器不可用……,找不到計算機帳戶……”,而不是直接提示“計算機帳號已被禁用”??傻紸D用戶和計算機中,將計算機帳號啟用即可。

對于 Windows 2000/XP/03,默認計算機帳戶密碼的更換周期為 30 天。如果由于某種原因該計算機帳戶的密碼與 LSA 機密不同步,登錄時就會出現出錯提示:“計算機帳戶丟失……”或“此工作站和主域間的信任關系失敗”。解決辦法:重設計算機帳戶,或將該計算機重新加入到域。

四、默認普通域用戶無權在DC上登錄

五、跨域登錄中的問題

在2000及以上計算機上登錄到域的過程是這樣的:域成員計算機根據本機DNS配置去找DNS服務器,DNS根據SRV記錄告訴它DC是誰,客戶機聯系DC,驗證后登錄。

如果是在林中跨域登錄,是首先查詢DNS服務器,問林的GC是誰。所以要保證林內有可用的GC。如果是要登錄到其它有信任關系的域(不一定是本林的),要保證DNS能找到對方的域。

不同網段的機器如何加入域呢? 利用WINS實現多子網的NT域互通…

第三篇:Windows編程教案

第一課

最簡單的Windows程序(2學時)

Windows編程是一個很大的主題,涉及的方面也非常的多。Windows始于90年代,至今Windows編程的發展已經非常成熟了,而單獨直接使用API的開發也是越來越少了。因此,市面上很少有泛泛的簡單入門級的Windows程序設計了。一個是系統級的Windows編程介紹,如Windows核心編程。一個是方向級的Windows編程介紹如Windows圖形編程,Windows網絡編程等等。我們這次課的主要參考用書是Windows核心編程,同時也參考了一些其他內容。鑒于教材的價格較貴,同時也需要考慮我們自身的學習內容不一定很多以及學時的原因,就沒有定教材??次业慕贪赴?。

(1) Win32 API API : Application Program Interface。應用程序接口。 API就是在進行Windows編程時使用的函數庫。 本課就是

Windows編程=API+C語言(或者C++語言) (2) 開發環境

我校機器上安裝了VC++ 6.0。相信這是大家一直以來學習C,C++使用的開發環境。但VC60離我們實在太遠了,它是一款90年代的產品,已經近20年的歷史了。我們機器里還有VS2005 或 VS2008,那里面的C環境要比VC60強太多了,強烈建議大家使用更高級的平臺。本次授課的開發環境有兩個。一個是輕量級的DEV C++,一個是重量級的VS2010.簡單程序我們都將用DEV C++來實現。

DEV C++是一個非常小的C環境,但性能要優于VC60,調試環境不如VC60。這個環境在我們的共享資源里有,大家可以下載安裝。安裝過程非常簡單,一直下一步即可。

這是其主界面。

(3) 最簡單的Windows程序

提到最簡單的程序,幾乎所有的人都會想起經典的HelloWorld。

這不是Windows程序,如果在以前這叫DOS程序,現在叫Windows控制臺應用程序。它不算Windows程序,但它很簡單的就把Helloword顯示到屏幕上了。而Windows程序要想把HelloWorld顯示在屏幕上就確實不容易了。

3.1 訪問Helloworld網站,因為把Helloworld顯示在屏幕上并不容易,我們可以一點一點來,先讓Helloworld以文字形式出現在其他地方,這里我們通過訪問網站。把helloworld展現在網頁瀏覽器的地址欄上。真有這個網站嗎?唉,貌似還真有。

運行程序,打開瀏覽器并訪問網站。

這是Windows程序。

Windows程序和我們以前的程序有什么不同呢?

Windows程序不能使用scanf,printf,cin,cout。所以輸出helloworld變得沒有以前容易了。 windows程序一定要#include windows程序的主函數不是main,是WinMain。注意區分大小寫。 主函數的參數不一樣了

int main(int argc ,char[] * argv) int WinMain(HINSTANCE hInstance, HINSTANCE,LPSTR lpStr,int nShow) 絕大多數的人,初次接觸Windows編程都會被其冗長的名字所折服,啊,沒辦法,這就是Windows的命名規格,叫匈牙利命令法,是微軟的一個匈牙利籍的程序員發明的,它的作用的能夠讓變量,類型名能夠真實的反應其代表的意義,這對英語人士自然很好。對英語不好的接受起來就有點難了。

詳細解釋一下

WinMain是Windows編程的主函數。一定注意大小寫啊。

HINSTANCE,用Windows的說法叫句柄數據類型。但它并不是一個新的數據類型,它是通過#define定義出來的。

#define DECLARE_HANDLE(name) struct name##__{int unused;}; typedef struct name##__ *name DECLARE_HANDLE(HINSTANCE);

上面兩行是windef.h中對HINSTANCE的定義。說到底HINSTANCE就是一個指針類型。

LPSTR 是 typedef char * LPSTR。

Windows編程里有大量通過#define和typedef定義出來的數據類型名。本質上它們都不是新的東西,都是以前我們在C語言學過的哪些數據類型另起了一個名字。為什么要這么做呢?一般Windows 程序比較大,好的命名利于維護和避免錯誤??傊?,說到底,舊壺裝新酒,貌似多了很多數據類型,不要被它們嚇到,它們就是比C語言你們學過的東西多穿了件馬甲。 第二課 在窗口中顯示HelloWorld中(4學時)

一、第一課的HelloWorld出現在網頁上。這不是我們的目的,我們要生成正常一點的HelloWorld。Windows程序中要顯示HelloWorld看來還不是太容易。 (1) 將HelloWorld繪制到桌面

補充說明

如果要讓這個程序順利執行,需要

寫的內容是lgdi32 運行的效果,helloworld顯示在桌面上了

看到HelloWorld了嗎。 說明

WinMain是Window的主函數

HDC 是個什么呢,本質上是個指針,但是我們不需要了解它指向了什么,因此,簡而化之HDC是一個32位的無符號整數。HDC叫設備上下文句柄。設備上下文指顯示器屏幕或打印機什么的。句柄有點類似文件句柄的意思,有了它才能操作設備。在這里有了它才能向設備上繪制。所有涉及繪圖的地方都涉及HDC。GetDC(窗口句柄)。如果使用GetDC(NULL)得到桌面的設備上下文。否則可以得到一個窗口的設備上下文,我們可以在窗口上進行繪制。

(2) LPTSTR 是 TCHAR * 的另一個寫法

(3) TextOut是Windows API的一個函數,功能是將文本寫到設備上下文上。

TextOut(HDC,橫坐標,縱坐標,字符串,字符串長度) (4) ReleaseDC(窗口句柄,HDC)釋放設備上下文

GetDC的得到的HDC一定要用ReleaseDC釋放,否則機器容易資源耗盡。

二、在一個獨立窗口中顯示HelloWorld,這是重點了,涉及一些Windows編程重要的內容

分如下幾個步驟

(1) 定義一個全局函數

(2) 定義WinMain函數

(3) 在WinMain函數內注冊窗口類

lpszClassName:自己取個名字,字母

lpfnWndProc:函數指針,為我們在第一步定義的函數名。用強制類型轉換 在Windows中顯示一個窗口,一定要先注冊窗口類。函數式RegisterClassEx(&wc) (4) 創建并顯示窗口

(5) 建立消息循環

(6) 補充處理WM_PAINT,補充WndProc函數

總結:創建窗口的模式是基本是固定的,本課的代碼很大一部分就是這么寫。主要在WndProc內存在不同。 涉及的API函數

RegisterClassEx(&WNDCLASSEX) WinMain(HINSTACNE,HINSTANCE,LPSTR,int nShow) DefWindowProc(HWND,UINT,WPARAM,LPARAM) GetMessage(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax).如果得到WM_QUIT返回0 TranslateMessage(&MSG) DispathMessage(&MSG) BeginPaint(&PAINTSTRUCT) TextOut(HDC,INT,INT,LPSTR,INT) EndPaint(HWND,&PAINTSTRUCT) 作業:

自己建立應用,在窗口100,100位置顯示HelloWorld 第三課 坐標位置及大小(4學時)

在我們寫控制臺應用的時候,不能自由的控制輸出顯示的位置。因此,沒有學習過這方面的內容,現在我們創建了窗口,并且在窗口上顯示了Hello World。這個過程涉及到很多涉及位置和大小的因素,如窗口的大小,顯示的位置,文字顯示的位置。說到位置,就涉及定位,說到定位就要說坐標系。在屏幕上顯示內容涉及到坐標空間的知識。在Windows應用中坐標空間分如下幾部分內容

1、物理坐標空間

物理坐標空間,指的是物理設備上對應的坐標系。如顯示器

坐標原點在左上角。如下是一個1024*768的屏幕物理坐標 (0,0) (1024,0)

(0,768)

2、設備坐標空間

基于設備上下文指定的坐標空間。如窗口內顯示的文本,使用的坐標就是基于窗口內上下文的坐標。

可以看到設備空間是物理空間體系的一個子空間。設備空間可以依賴于一個窗口。換句話可以把設備空間理解為在物理空間上顯示的一個對象,其子空間。 下面我們通過一個小例子理解物理空間和設備空間

在窗口的標題條,以設備坐標,和物理坐標的形式顯示鼠標在窗口內的位置

WndProc處理消息循環

WM_MOUSEMOVE,鼠標移動時消息標識,是個整數。其參數lParam,的第16位代表設備坐標中的X,高16位代表設備坐標的Y。 POINT 是結構體。只有x,y兩個成員 ClientToScreen,將設備坐標轉換為屏幕坐標(物理坐標) sprintf:格式化字符串

SetWindowText:設Window標題

3、頁面坐標空間(邏輯坐標空間的一種)

作用,可以任意指定坐標原點,坐標軸方向,比例尺等信息??梢杂脕砼c設備無關的大小如厘米,毫米等。

頁面坐標叫窗口,其表示有原點(X,Y),寬度,高度組成(WIDTH,HEIGHT) 設備坐標叫視口,其表示有原點(x,y),寬度,高度組成(width,height)

頁面坐標和設備坐標的變換關系,大寫為設備坐標,小寫為頁面坐標

PX=X+(px-x)*WIDTH/width PY=Y+(py-y)*HEIGHT/height

px=x+(PX-X)*width/WIDTH py=y+(PY-Y)*heigh/HEIGHT

GDI函數使用頁面坐標,顯示出來時是設備坐標

通過對窗口,是否對應的四個參數的設置,可以實現特殊的變換。 頁面坐標是邏輯坐標的一種。在這個例子中我們一直使用 MoveToEx(ps.hdc,0,0,NULL);

LineTo(ps.hdc,30,30); 劃線,MoveToEx是把畫筆移動到指定位置(頁面坐標),LineTo是從畫筆所在位置到目標位置畫一條線。

在這個例子中,每次劃線前通過設置視口,窗口結果使劃線的結果不同。 這種形式的坐標轉換無法實現旋轉

4、世界坐標空間(邏輯坐標空間的另一種) 功能:比頁面坐標空間方便,可以實現旋轉 結構體 XFORM{ FLOAT eM11, FLOAT eM12, FLOAT eM21, FLOAT eM21, FLOAT eDx, FLOAT eDy, } 世界坐標到設備坐標的變換。小寫到大寫。 PX=eM11*px+eM21*py+eDx; PY=eM12*px+eM22*py+eDy; 默認為{1,0,0,1,0,0} 和設備坐標相同 {1001dxdy} {mx00my00}縮放 {-100-100}映像

旋轉{cos(a),sin(a),-sin(a),cos(a),0,0}順時針旋轉a度 {cos(a),-sin(a),sin(a),cos(a),0,0}逆時針旋轉a度

我們下面的例子通過Rectangle(ps.hdc,0,0,50,50);繪制50*50的矩形,用循環配合世界坐標變換繪制特殊的圖形

循環20次,每次旋轉坐標軸的方向,繪制正方形。 總結:

物理坐標指的是屏幕坐標,不能改變坐標軸 設備坐標指的是窗口坐標,不能改變坐標軸

頁面坐標和世界坐標均是邏輯坐標,可以改變坐標軸,世界坐標功能更強,可以旋轉。理解這些概念的繪圖是很重要的。

相關函數

BOOL ClientToScreen( HWND hWnd, LPPOINT lpPoint); 設備坐標轉屏幕坐標

BOOL ScreenToClient( HWND hWnd,

LPPOINT lpPoint); 屏幕坐標轉設備坐標 int MapWindowPoints( HWND hWndFrom, HWND hWndTo, LPPOINT lpPoints, UINT cPoints);

各個窗口設備坐標之間的轉換

BOOL SetWindowOrgEx( HDC hdc, int X,

int Y,

LPPOINT lpPoint ); 設置窗口的原點

SetViewportOrgEx( HDC hdc,

int X,

int Y,

LPPOINT lpPoint); 設置視口的原點

BOOL SetViewportExtEx( HDC hdc, int nXExtent, int nYExtent,

LPSIZE lpSize); 設置視口的width,height BOOL SetWindowExtEx( HDC hdc, int nXExtent,

int nYExtent, 設置窗口的width,height SetMapMode設置頁面坐標的映射模式 SetGraphicsMode設置世界坐標的映射模式 Rectangle繪制矩形,并填充內部 SetWorldTransform設置世界坐標變換 LineTo:換線

MoveToEx:移動畫筆

SetWindowText設置窗口標題

LPtoDP(hdc,LPPOINT,int)把邏輯坐標點轉換為設備坐標點 作業:

使用movetoex,lineto,LPtoDP及世界坐標變換,繪制正六邊形

LPSIZE lpSize );

提示:

畫一條水平線后,將坐標原點移動到線的末尾,并將坐標軸旋轉60度*n,重復上步 要將坐標移動到線尾需要使用LPtoDP

第四課 色彩及繪制(6學時)

(1)畫點

像素:計算機屏幕上的一個點。是計算機屏幕顯示的最小單位。點的個數取決于計算機的分辨率。如1024*768,則屏幕由1024*768個點組成。每個點都可以獨立的顯示一個顏色。計算機能夠表示的顏色有256*256*256=16777216種。 顏色的表示 COLORREF 。定義顏色RGB COLORREF color=RGB(紅,綠,藍) 隨機繪制顏色點

需要#include srand:隨機種子函數,傳遞的參數不同,可以生成不同的隨機數序列

GetTickCount(): API函數,得到系統開機后到現在的滴答數,特點就是每次返回的結果不重復。

兩者的配合得到不重復的隨機數序列

rand得到函數

SetPixel設置某點的顏色

(2)畫線

在以前的例子里我們一直用1個像素寬的黑色實現來畫線?,F在我們學習創建畫筆,用畫筆來畫線。

步驟

1、創建畫筆CreatePen(畫筆類型,寬度,顏色)

2、將畫筆選入設備上下文SelectObject

3、用畫筆繪制

4、將畫筆選出設備

5、刪除創建的畫筆對象

SelectObject是將GDI對象畫筆選入設備上下文,并將當前的選出返回。因此我們兩次使用SelectObject,最后一個將以前的畫筆選入,返回我們創建的,并在下一步刪除畫筆。

虛線只能支持寬度1.

畫線函數

Polygon(HDC,LPPOINT,INT).連接指定點,畫多邊形,封閉。如果畫4邊形則確認3個點即可。

Polyline(HDC,LPPOINT,INT).連接指定點,畫多邊,不封閉 MoveToEx:移動畫筆

LineTo:用當前的畫筆劃線

Arc:畫圓弧 BOOL Arc( HDC hdc, int nLeftRect, int nTopRect, int nRightRect,

int nBottomRect, int nXStartArc,

int nYStartArc,

int nXEndArc,

int nYEndArc

); 前4個是畫圓弧的矩形,后四個指定了弧開始和結束的位置 作業:畫一條正弦曲線

使用SexPixel,LineTo,MoveToEx實現

(3)畫面

畫面就是用畫刷來填充 步驟

1、創建畫刷CreateSolidBrush(顏色)

2、將畫刷選入設備上下文SelectObject

3、用畫刷填充

4、將畫刷選出設備

5、刪除創建的畫刷對象

用藍色畫刷填充矩形,矩形的邊框是黑色。 CreateSolidBrush:創建顏色畫刷

Rectangle:繪制矩形,用當前的Pen繪制邊框,用當前的Brush來填充矩形內部 FillRect:畫刷填充矩形。FillRect(hdc,&RECT,HBRUSH)

使用FillRect不繪制邊框,因為參數中有畫筆,也不用SelectObject了。 Ellipse:橢圓,圓。畫邊框,填充 Pie:圓餅 (4)位圖

將文件系統中的位圖顯示到窗口中。 繪制位圖步驟

1、根據現有的設備上下文創建兼容的設備上下文

2、加載位圖

3、繪制圖像

4、刪除加載的位圖

5、刪除兼容的設備上下文

BitBlt是在設備上下文之間拷貝圖像的函數,非常常用

在上一個列子的基礎上,得到位圖的大小并繪制實際大小的位圖 作業:

在一個窗口上顯示一副位圖文件(*.bmp)。 (5)字體和文本

創建邏輯字體并顯示文本 步驟

1、創建邏輯字體

2、選入字體

3、輸出文本

4、選出字體

5、刪除字體

另一個與文本繪制有關的功能更強的函數是DrawText 總結:本課介紹了一些基本的繪圖操作,其中涉及了較多的函數,這里只是介紹了基本的使用方式和原理。 函數 srand rand GetClientRect SetPixel LineTo MoveToEx CreatePen CreateSolidBrush CreateFontIndirect BitBlt SelectObject DeleteObject CreateCompatibleDC LoadImage Rectangle FillRect DeleteDC 等等。

第五課 常用控件的使用(6學時)

在上面的幾節課程中我們學習了如何建立Windows 應用,并在圖形環境下繪制圖形。這些操作都是控制臺應用中沒有的。本章我們介紹如何在窗口中加入按鈕等常規控件,并且處理它們。

一般控件種類,按鈕,列表組合,編輯,列表,滾動條,靜態文本??丶且环N特殊的窗口。這些特殊窗口的類已經由Windows系統注冊了,不需要我們注冊。這些類的名字分別為。

BUTTON,COMBOBOX,EDIT,LISTBOX,SCROLLBAR,STATIC (1) 創建

任何時候均可,但通常在WM_CREATE事件中處理

WM_CREATE是在窗口創建時觸發 WM_DESTORY是在窗口銷毀時觸發

控件用CreateWindow創建,返回控件窗體的句柄,窗體的類型一定為WS_CHILDWINDOW。附加的類型以或關系疊加。具體要參見MSDN (2) 操控

控制這些控件是通過向這些控件的窗體句柄發送特點消息來實現的 如 SendMessage(控件句柄,消息指,參數1,參數2)具體設置參見MSDN 在上面的例子,我們處理下拉列表的時候使用了SendMessage發送消息 (3) 反饋

我們操作控件會觸發控件的事件得到一些反饋,下面介紹如何得到這些反饋??傮w上,我們把這些反饋過程叫通知。通知的過程是將反饋發送給父窗體,一般父窗體有兩個事件接收控件的反饋

WM_NOTIFY,WM_COMMAND。 WM_COMMAND HIWORD(wParam)通知消息號 LOWORD(wParam)控件標識 WM_NOTIFY wParam :控件標識 lParam:NHMDR的指針

比如按鈕的單機對應的事件是BN_CLICKED。該事件通過WM_COMMAND通知。

我們把上個例子補充完整,并且為每個控件指定ID,指定的方式是在(HMENU)的后面寫個整數,原則上應該不同。

HIWORD,得到一個字的高字節。LOWORD得到一個字的低字節。 (4) 通用控件

我們上面介紹的是基本的控件,除了這些基本控件外還有一些通用控件。這些控件的使用和處理和基本的控件差不多,但功能更強大。 ANIMATE_CLASS : 動畫控件,播放AVI動畫 DATETIMEPICK_CLASS :日期時間下拉控件 HOTKEY_CLASS :定義熱鍵的控件 MONTHCAL_CLASS : 月份選擇控件 PROGRESS_CLASS :進度條控件 REBARCLASSNAME :rebar控件 STATUSCLASSNAME:狀態條控件 TOOLBARCLASSNAME :工具條 TOOLTIPS_CLASS :提示控件 TRACKBAR_CLASS :軌跡條 UPDOWN_CLASS :上下箭頭

WC_COMBOBOXEX :組合框擴展 WC_HEADER :頭控件

WC_IPADDRESS :IP地址控件 WC_LISTVIEW :listview控件

WC_PAGESCROLLER :頁滾動控件 WC_TABCONTROL :tabControl控件 WC_TREEVIEW :樹視圖控件

通用控件在使用前使用InitCommonControlsEx初始化。 使用這些通用控件要include 同時在連接時要連接 comctl32.dll

頭部

這些控件和IE有關系,根據IE版本不同,控件的外觀和功能有區別。

(5) 創建菜單

CreateMenu:創建一個菜單

CreatePopupMenu:創建一個子菜單 AppendMenu:向菜單增加項目 SetMenu:將菜單聯系到窗口

第六課 進程及線程(2學時)

進程:是一個正在運行的程序的實例。由兩個部分組成

1、一個是操作系統用來管理進行的內核對象。內核對象是系統用來存放關于進程信息的地方。

2、地址空間,每個進行都有自己的地址空間

進程本身不執行代碼,進程要至少擁有一個線程,由線程來執行代碼。每個線程都擁有自己的CPU寄存器和堆棧。當創建一個進程時系統會自動創建一個主線程。

CreateProcess創建進程

內部執行細節:1 創建一個小的結構存放進程信息

2 分配地址空間

3 創建一個小的結構存放線程信息

4 執行C/C++啟動代碼,最終會調用WinMain或main。 結束一個進程 TerminateProcess

TerminateProcess 1 使用ToolHelp遍歷系統進程

列舉系統全部的進程

需要

#include #include using namespace std;

線程

線程由兩個部分組成

1 內核對象

2 線程堆棧,用于維護執行代碼時所有的函數參數和局部變量 進程是活波的,進程不執行任何東西,它是線程的容器。線程在進程的地址空間中執行代碼。如果一個進程擁有多個線程則這些線程共享進程地址空間內的代碼和數據。進程的地址空間要比線程占用更多的系統資源,因此要更多的使用線程。每個線程必須有個入口點函數,主線程是main,WinMain。如果要創建一個線程,則這個線程的函數原型是這樣的。 DWORD WINAPI ThreadProc(PVOID pvParm) {

return value; } 因為線程會共享全局變量,因此多線程應該少使用全局變量 1 線程創建

線程的創建不能直接使用CreateThread API函數。而要使用C編譯環境自帶的創建進程函數。

#include unsigned uThreadid=0; uintptr_t hThread=

_beginthreadex(NULL, 0,ThreadProc,NULL,CREATE_SUSPENDED,&uThreadid); 第3個參數是線程函數地址,第4個參數是傳遞到線程的LPVOID,第5個參數為0線程馬上運行、CREATE_SUSPENDED需要激活才能運行。最后一個保存線程的ID 進程和線程ID是一個標識。不重復。進程和線程對象是系統對象,關閉這些對象對進程和線程的運行沒有影響。

第7課 線程的調度和同步(6學時) 線程暫停:

創建時使用CREATE_SUSPENDED創建一個暫停的線程

使用SuspendThread暫停線程

長時間不使用窗體 恢復線程:

ResumeThread

ResumeThread和SuspendThread使用次數要對應。

休眠線程 Sleep(毫秒) 線程的同步是比較容易出錯的地方,要多多實踐和理解。 參見線程沖突的例子。

每個線程對變量g累加10000次,創建6個線程,這是其中一次的運行結果??梢钥吹浇Y果不是60000.

對線程沖突問題的解釋

一條C的g++對應的匯編指令為3條 mov eax,[g] inc eax mov [g],eax

如果我們創建兩個線程,這兩個線程將共享上面的代碼。如果只有一個CPU的話,那同一時刻只能志執行一條匯編指令。但Windows的調度機制可以保證代碼按順序執行,但不能保證不被打斷。 舉例 g=0 mov eax,[g] //1 eax=0 inc eax

//1 eax=1 mov [g],eax //1 g=1 eax=1 mov eax,[g] //2 eax=1 inc eax

//2 eax=2 mov [g],eax //2 g=2 eax=2 1和2兩個線程分別執行上面的3行代碼,則g被加了兩次,得到2。但實際上這是多線程的特例。真實的情況是CPU下條要執行那個線程的代碼是隨機的。如下

g=0 mov eax,[g] //1 eax=0 inc eax

//1 eax=1 mov eax,[g] //2 eax=0 inc eax

//2 eax=1 mov [g],eax //2 g=1 eax=1 mov [g],eax //1 g=1 eax=1

線程1在增加后沒有及時賦值給g,然后線程2執行。最后g為1。這就是線程沒有同步導致的問題,也是我們程序中出現的問題。 解決方法(1) 原子操作函數

使用InterlockedExchangeAdd,加減

InterlockedExchange 賦值

InterlockedCompareExchange 比較賦值

使用這些函數加減變量,保證只有執行完后其他進程才能進入。

結果是60000了,但是按理應該輸出六次“線程運行了結束了”。但只顯示兩次,其實每次的結果多不會一樣。這也是并發帶來的問題。

解決方法(2) 關鍵代碼段

在使用關鍵段之前使用該函數

輸出了6次,但每次對應的g值不一定以10000遞增。如果把進入關鍵段的位置提前到最前面可以得到常規的理解

這時這6個進程某種意義上沒有并發執行。

局限:關鍵代碼段只能在一個進程內使用,沒有等待時長的限制容易死鎖。 解決方法(3) 內核對象 具備通知狀態的內核對象 進程 線程 作業

文件修改通知 事件

可等待定時器 文件 信標

控制臺輸入 互斥對象 舉個例子

取消注釋后,一次顯示一個。體現了該函數對線程的控制。

(1)事件控制

盡管WaitForSingleObject可以等待很多對象的反應,但其主要還是用來處理事件等對象。 事件是一種內核對象,有兩個狀態,一個用于表示該事件是自動重置事件還是人工重置事件。人工重置事件等待該事件的線程都會得到通知,自動重置事件只有一個線程會得到通知。另一個是事件的通知狀態。一是未通知狀態線程等待,一個是已通知狀態,線程運行。 CreateEvent( NULL,自動(false)還是手工(true),通知(true)未通知(false)。 HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes,

BOOL bManualReset,

BOOL bInitialState,

LPTSTR lpName ); 最后一個是為事件起個名字,同名事件不能建立兩次。保證同名事件只能建立一次,可以為空。 SetEvent:設為已通知狀態 ResetEvent:設為未通知狀態

OpenEvent:打開一個已經存在的時間,返回Handle

創建自動通知,立即通知事件

對自動通知事件SetEvent有意義,對手工通知事件無意義。 手工通知同時顯示6個窗口,自動通知一次顯示1個 (2)信標內核對象

使用信標可以確定讓幾個線程同時運行

CreateSemaphore(NULL,初始數,最大數,名稱) OpenSemaphore

最多同時有3個線程運行。 (3)互斥對象

互斥對象和關鍵代碼段的作用相同,效率比關鍵代碼段低。但運行不同進程間使用互斥對象,同時可以設置最大的等待時長?;コ鈱ο蠛推渌麅群藢ο蟮膮^別,互斥對象可以記錄調用的線程ID,一旦線程得到該對象同線程的其他地方的等待將不會等待。 CreateMutex(NULL,初始等待,名稱) OpenMutex(0,NULL,名稱) ReleaseMutex(HANDLE),只能是否本線程得到的對象

(4)

第四篇:windows實驗一

(1)在“student1”文件夾下建立一個名為“課題組”的文件夾,并于此文件夾下新建下列子文件夾:

“個人簡介、我的論文、教改成果、教學資源、資料”;在文件夾“教學資源”下新建子文件夾:“圖片、課件、教案”;在文件夾“資料”中新建文件夾:“文本文件類、壓縮文件類”。

(2)在“student1”文件夾中新建word文件,文件名為“文學作品.doc”,將該文件的屬性設置為隱藏。

(3)設置最后一個硬盤盤所有文件和文件夾的顯示方式為:顯示隱藏文件,不隱藏已知文件的類型的擴展名。

(4)設置文件夾“student1”的顯示方式為詳細信息。

(5)查找系統提供的應用程序calc.exe,并在桌面上建立其快捷方式,快捷方式命名為“計算器”

(6)將子文件夾“dos”中的含有“X”字母的文件移動到“student1課題組教改成果”文件夾中。

(7)用附件——畫圖 畫一個藍色的三角形,并保存為擴展名為PNG的文件,放到圖片文件夾。

(8)在“個人簡介“文件夾中,創建一記事本文件,文件名”個人簡介“,內容:學號,姓名,性別,愛好等,并將文件屬性設置為只讀,存檔。

(9)將“開始”菜單“所有程序附件”中的記事本程序鎖定到任務欄

(10)搜索一張關于“薰衣草”的圖片,并將該圖片設置為自己的桌面,隱藏任務欄,將桌面截圖,截圖文件名為“桌面”并保存在"student1教學資源圖片"文件夾中。

(11)搜索c盤中的壓縮文件,并將找到的文件復制到文件夾“student1資料壓縮文件類”中。

(12)查找C盤上擴展名為.gif,文件大小在10KB—100KB的文件。選擇2個拷貝到文件夾"student1win"中。

(13)刪除文件夾“student1”中的子文件夾“linux”。

(14)使用計算器選擇“科學型”和“程序員型”,將計算結果寫在記事本中,并以“計算結果”為名保存到student1文件夾中。

(a)計算十進制數2013,用二進制、八進制、十六進制各表示為多少?

(b)換算:100加侖等于多少立方米?100磅等于多少千克?

(c)日期計算:從今天到2013年12月31日還有多少天?

(15)將文件夾“student1”移入張三文件夾,再將張三文件夾改為自己的學號+姓名。

將自己的文件夾壓縮,并把壓縮文件上傳到老師指定地址。

第五篇:window.showModalDialog()

基本介紹:

showModalDialog() (IE 4+ 支持)

showModelessDialog() (IE 5+ 支持)

window.showModalDialog()方法用來創建一個顯示HTML內容的模態對話框。

window.showModelessDialog()方法用來創建一個顯示HTML內容的非模態對話框。

使用方法: vReturnValue = window.showModalDialog(sURL [, vArguments] [,sFeatures]) vReturnValue = window.showModelessDialog(sURL [, vArguments] [,sFeatures])

參數說明:

sURL--

必選參數,類型:字符串。用來指定對話框要顯示的文檔的URL。

vArguments--

可選參數,類型:變體。用來向對話框傳遞參數。傳遞的參數類型不限,包括數組等。對話框通過window.dialogArguments來取得傳遞進來的參數。

sFeatures--

可選參數,類型:字符串。用來描述對話框的外觀等信息,可以使用以下的一個或幾個,用分號“;”隔開。

1.dialogHeight :對話框高度,不小于100px,IE4中dialogHeight 和 dialogWidth 默認的單位是em,而IE5中是px,為方便其見,在定義modal方式的對話框時,用px做單位。

2.dialogWidth: 對話框寬度。

3.dialogLeft: 離屏幕左的距離。

4.dialogTop: 離屏幕上的距離。

5.center: {yes | no | 1 | 0 }:窗口是否居中,默認yes,但仍可以指定高度和寬度。

6.help: {yes | no | 1 | 0 }:是否顯示幫助按鈕,默認yes。

7.resizable: {yes | no | 1 | 0 } [IE5+]:是否可被改變大小。默認no。

8.status: {yes | no | 1 | 0 } [IE5+]:是否顯示狀態欄。默認為yes[ Modeless]或no[Modal]。

9.scroll:{ yes | no | 1 | 0 | on | off }:指明對話框是否顯示滾動條。默認為yes。

下面幾個屬性是用在HTA中的,在一般的網頁中一般不使用。

10.dialogHide:{ yes | no | 1 | 0 | on | off }:在打印或者打印預覽時對話框是否隱藏。默認為no。

11.edge:{ sunken | raised }:指明對話框的邊框樣式。默認為raised。

12.unadorned:{ yes | no | 1 | 0 | on | off }:默認為no。

參數傳遞:

1.要想對話框傳遞參數,是通過vArguments來進行傳遞的。類型不限制,對于字符串類型,最大為4096個字符。也可以傳遞對象,例如:

parent.htm

var obj = new Object();

obj.name="i5tt";

window.showModalDialog("modal.htm",obj,"dialogWidth=200px;dialogHeight=100px");

modal.htm

var obj = window.dialogArguments

alert("您傳遞的參數為:" + obj.name)

 

2.可以通過window.returnValue向打開對話框的窗口返回信息,當然也可以是對象。例如: ------------------------------

parent.htm

str =window.showModalDialog("modal.htm",,"dialogWidth=200px;dialogHeight=100px"); alert(str);

 

modal.htm

window.returnValue="http://";

 

本文來自 99學術網(www.gaojutz.com),轉載請保留網址和出處

上一篇:中職學校社團建設經驗下一篇:組織行為學階段測評四

91尤物免费视频-97这里有精品视频-99久久婷婷国产综合亚洲-国产91精品老熟女泄火