久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

LCC-Win32介紹-lianger

 Synix 2010-02-05

LCC-Win32介紹
    LCC-Win32原來是一個免費的WIN32編譯器,,包含一個很好用的IDE,,用起來很爽,但是最近的版本是要付費的了(40美圓),。詳情請見LCC-Win32官方網(wǎng)站,。它的免費版本可以在國內(nèi)得到,到云風(fēng)工作室看一下,,你會有所收獲,。

 


簡介
    其實所謂的簡介這個部分的內(nèi)容趨向取決于作者。但是我所讀過的一些指南都是由一個“簡介”開始的,,這部分的內(nèi)容通常都是在重復(fù)讀者會在下面看到的東西,,但是也有的簡介只是作者的一些想法。
    仔細(xì)的想一下,,其實這個介紹并不是一件簡單的事情,。首先,如果你要是開門見山的直奔主題,,這是不禮貌的,,而且基于web的指南也不應(yīng)該有超大個的簡介,不應(yīng)該讓讀者在這個東西上浪費時間和金錢,。

    看來我的廢話也夠多的了,,讓我們切入正題。

    這個指南是單頁的,,建議你等瀏覽器下載完畢后保存一份拷貝來離線閱讀,。

 

編譯器的安裝
    編譯器的安裝簡單極了,只要把您下載的文件運行一下就OK了,,應(yīng)該不會遇到什么問題,。但是注意安裝的最后要編譯庫文件,,可能要花點時間,,要視你的機器速度而定。


Lcc-Win32的一些基本概念
    Lcc-Win32編譯系統(tǒng)是由多個文件構(gòu)成的,。它們的共同的任務(wù)是把文本格式的源代碼編譯位可以運行的二進(jìn)制格式,。優(yōu)良個重要的文件分別是編譯器(lcc.exe)和連接器(lcclnk.exe),。
    編譯器是用來把你編寫的文本翻譯成處理器可以執(zhí)行的格式的程序。連接器用來轉(zhuǎn)換編譯器生成的二進(jìn)制文件(通常叫做目標(biāo)文件),,并添加操作系統(tǒng)用來把程序調(diào)入內(nèi)存并執(zhí)行所需要的信息它可以把多個目標(biāo)文件鏈接為一個單獨的程可執(zhí)行程序,,這樣就可以使你可以把一個程序的代碼文檔分割為幾個模塊,這個能力在你開發(fā)大型程序時是很重要的,。

    雖然這些聽起來好像十分的簡單,,但是實際上并不是這個樣子的。編輯器和鏈接器需要你在命令行方式下鍵入你要建立的程序的所有信息,,這將需要你記住大量的命令行參數(shù)和各種各樣的開關(guān),,這時就需要IDE——集成開發(fā)環(huán)境(edit.exe)來提供方便了。

    IDE的基本功能是編輯文本,,你可以在這個環(huán)境里編輯程序的源代碼,,但是遠(yuǎn)遠(yuǎn)不止有這個功能。它還給你提供了一個調(diào)用編譯器和鏈接器的簡單方法,,這樣在編譯程序的時候你就不用去記住那么多的命令行參數(shù)了,。

    你可以簡單的把Wedit想象成你的控制臺,在這里你可以控制所有的流程,。

    好吧,!現(xiàn)在你可以用你的鼠標(biāo)點一下Windows的“開始”按鈕,在程序項的子菜單了尋找“lcc-win32”,,好了嗎,?現(xiàn)在你已經(jīng)準(zhǔn)備好在Lcc-Win32中寫你的第一個程序了。

 

寫個小程序,!
    你知道嗎,?自從第一個C編譯器產(chǎn)生以來(也許可能更早一些),有一個慣例就是為這個編譯器寫的第一個程序是“Hello World”,,我為我擁有的所有編譯器都寫過,,現(xiàn)在我們就來寫一個。
    第一步是創(chuàng)建源碼文件,。在“File”菜單中選擇“new”項,,然后在出現(xiàn)的對話框中輸入“hello.c”并點一下“OK”。

    現(xiàn)在你看到的是一個標(biāo)題為“hello.c”的空白窗口,,輸入下面的代碼:

#include <stdio.h>

void main (void)
{
    printf ("Hello World from LCC-Win32!\n");
}

    保存我們的小程序,,在“File”菜單中選擇“Save”項,。

    現(xiàn)在我們可以編譯這個程序了。選擇“Compiler”菜單中的“Compile hello.c”調(diào)用編譯器,。這時一個新窗口會出現(xiàn)在IDE的底部,,這是信息窗口,當(dāng)編譯器處理完成,,在這個窗口中將會顯示“HELLO.exe build successfully.”,,如果編譯出錯,出錯信息也將會被顯示在這里,。

    如果編譯出錯了,,在信息窗口處雙擊信息顯示所在行,在編輯窗口內(nèi)將高亮度顯示出錯代碼行,,仔細(xì)的檢查一下你寫的程序和上面我寫的一樣,,這里需要注意的是C語言是大小寫敏感的程序語言,這意味著“printf”和“Printf”對編譯器是不相同,。

    現(xiàn)在你已經(jīng)編譯好了這個程序,,按[Ctrl]+[F5]鍵運行一下,結(jié)果對嗎,?


使用工程管理
    現(xiàn)在你已經(jīng)編譯了你的第一個程序,,你可能想知道——執(zhí)行文件在哪里?
    回答是:我也不知道,!這可能聽起來很傻(的確也是),,但是這是看你在編譯程序時的缺省目錄是什么,所以你應(yīng)該在你的硬盤里搜索一個叫做“hello.exe”的文件,。

    你肯定不會想要每開發(fā)一個程序都要搜索一下硬盤的,,這種情況下你就要使用工程。

    工程是一些編譯器要知曉的建立程序所需要的信息,。這包括程序源文件,、編譯好的文件的存放地點、要編譯為什么類型的可執(zhí)行文件,,一個好的想法是為每一個程序建立一個工程,。

    事實上,對于我們的“HelloWorld”程序還是有一個工程的,,Lcc=Win32會為沒有指明工程的程序建立一個缺省的工程,。選擇“Project”菜單的“Erase...”項,Wedit會顯示一個工程列表,,你會看到一個項目叫做“HELLO”,,現(xiàn)在我們毫不留情的刪除它。

    與其他的編譯器不同的是,,Lcc-Win32的工程信息不是存儲在硬盤上的,,而是存儲在Windows的注冊表項里,。這使得Wedit可以“記住”所有的工程,甚至于在不同的磁盤上,。但是優(yōu)勢我們也需要清除我們不再使用的工程,,在這種情況下,我們可以把工程信息導(dǎo)出到磁盤上,,然后在IDE中刪除它??匆幌?#8220;Project”菜單的選項,,你就會明白了。

    現(xiàn)在你可以試著創(chuàng)建一個“HELLO”工程,。


第一個Windows程序
    你可能已經(jīng)注意到了hello.exe看起來象是一個DOS程序,,但是它不是的,它是一個真正Windows程序,,但是這種類型的程序被稱為Windows控制臺程序,就是在文本模式下運行的Windows程序,。如果你不相信,可以試著在Windows的純DOS環(huán)境下運行一下,,你會得到一行信息:“This program cannot be run in DOS mode”,。
    寫一個真正的Windows版的“HelloWorld”程序并不比控制臺的版本難多少。首先創(chuàng)建一個新工程,,選擇“Windows executable”代替“Console application”,,點OK后,Lcc-Win32會問你需要Wizard(生成向?qū)В﹦?chuàng)建程序框架嗎,,回答No,。

#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    MessageBox (NULL, "Hello world from Lcc-Win32!", "Hello", MB_OK);
    return 0;
}

    編譯并運行這個程序,你會看到一個顯示hello信息的窗口,,點ok關(guān)閉退出,。

    不幸的是,除了這樣的小之又小的Windows程序,,一般情況下Windows程序是很復(fù)雜的,,現(xiàn)在你已經(jīng)知道了如何創(chuàng)建工程和編譯程序,如果你是一個Windows編程新手,,去找一些有關(guān)的書來看看,,取得必要的基礎(chǔ),一些Windows編程知識在下面的部分是必須的,。

    如果你是一個C語言的新手,,那么先好好的學(xué)一段時間再來看這個指南吧!


程序生成向?qū)?
    Windows程序與文本狀態(tài)下的程序比起來要好的多,,但是天上不會掉餡餅的,,你想要得到的Windows功能支持,,比如:剪裁板、多任務(wù)等等要付出的是大量的復(fù)雜的代碼,。
    但是總還是有些辦法可以使事情變得簡單一些的,。長時間以來,程序員們發(fā)現(xiàn)實際上總是有些在每個程序中都相同的代碼段,,所以Windows程序員通常使用模板來生成這部分代碼,。就是說源文件一般只要生成一次,就可以在任何一個新程序中使用了,。只有變化的部分才是每個程序不同的部分,,顯然這些應(yīng)該是可以自動的進(jìn)行的。

    這就是生成向?qū)б瓿傻墓ぷ?。你可以在它的幫助下快速的生成?yīng)用程序的框架,。這個框架事實上就是一個什么功能也沒有的一個完整的程序,也許可能只是用來顯示一個空窗體,,因為使程序完成具體的功能是你的工作,。

    讓我們看一下使用向?qū)Ы⒆詈唵蔚膽?yīng)用程序的處理。

    通常,,第一步是創(chuàng)建程序代碼,,然后建立一個工程。在使用向?qū)У哪J较?,你并不需要寫一行代碼,,向?qū)槟憬⑺覀冎苯觼砜唇⒐こ谈鱾€步驟,。

    在“Project”菜單下選擇“create”項,,給出項目名稱和路徑,選擇工程類型為“Windows executable”,,當(dāng)Wedit詢問你是否要使用向?qū)В╳izard),,回答“yes”,這樣就進(jìn)入了向?qū)J健?

    向?qū)@示一個對話框叫做:“Application characteristics”,,這是向?qū)⒃趹?yīng)用程序中包含的基本特點,,你可以選擇以下情況的一種:單窗口、多窗口和DLL(動態(tài)鏈接庫),,現(xiàn)在我們要創(chuàng)建一個十分簡單的單窗口小應(yīng)用程序,,選擇單窗口類型并確保所有的特性復(fù)選按紐都未被選中,點擊“OK”進(jìn)行處理,。

    現(xiàn)在向?qū)⒁崾灸爿斎胄畔⒃O(shè)置主窗口的“類”,,這里所說的“類”和C++中的類是不同的,它是Windows在內(nèi)存中存儲的一個結(jié)構(gòu),用來存儲正確顯示窗口所需要的信息,。最重要的是“回叫函數(shù)”(下面將具體介紹)的名稱,,現(xiàn)在只要簡單接受默認(rèn)的屬性值,點擊“NEXT”進(jìn)行處理,。

    這個“Generate code for the main window creation”對話框用來設(shè)定相應(yīng)窗口的信息,。當(dāng)主窗體被創(chuàng)建的時候這些信息會被傳送到相應(yīng)的窗口。在這里你可以改變窗口的標(biāo)題欄的顯示內(nèi)容,,然后點擊“Finish”,。

    向?qū)У墓ぷ骶鸵瓿闪耍酉聛淼墓こ虅?chuàng)建工作是通常的一些對編譯器,、鏈接器,、調(diào)試器的一些設(shè)置,這里只要簡單的接受缺省的選項就可以了,。

    經(jīng)過上面的步驟,就完成了向?qū)У乃械墓ぷ?,你可以在IDE中看到兩個窗口,,一個是源程序編輯窗,另外的一個是用來定義應(yīng)用程序的主菜單的腳本,。

    正象剛剛所說的那樣,,這個程序框架是全功能的,可以通過編譯并運行,,你可以看到一個有菜單的窗口,。唯一可以進(jìn)行的操作是“File”菜單的“Exit”項,你可以使用這個菜單項關(guān)閉這個簡單的窗口,,也可以使用[Ctrl]+[Q]完成同樣的操作,。

    現(xiàn)在你可以看一下這個程序的源代碼,你會注意到這個程序比那個“Hello World!”程序復(fù)雜了許多,,我可以告訴你一個小竅門——從源代碼的結(jié)尾開始讀起,,因為通常那里才是一些功能函數(shù)的所在。

 

使用WeditRes創(chuàng)建資源
    在Windows程序的開發(fā)中,,資源是十分重要的部分,,菜單、對話框和其它的一些用戶接口部分都是可以象寫程序一樣的編寫的,,可以簡單的作為資源包含進(jìn)程序中,。
    如果Lcc-Win32沒有提供一個資源編輯器那么Lcc-Win32將不是一個完整的Win32編譯程序,Lcc-Win32提供的資源編輯器叫做WeditRes,,是在“lcc\bin\”路徑下,。

    的確,WeditRes還是在不斷的完善的過程中,也就是說還沒有開發(fā)完成,。不過它已經(jīng)可以編輯一些手工編輯難以完成的資源了,,比如:菜單和對話框等等。在IDE下調(diào)用WeditRes,,在“Compiler”菜單下選擇“Resources”項,。

    如果你正在開發(fā)的程序是用向?qū)傻模敲聪驅(qū)a(chǎn)生一個資源文件,,在這個文件里至少包括菜單資源,,WeditRes會打開這個資源文件,但是它不會找到相應(yīng)的頭文件,你應(yīng)該為它指明頭文件的路徑,。通常是在WeditRes當(dāng)前工作路徑的上一級目錄,。WeditRes要找的文件通常叫做prjnamewiz.h,這里的prjname是你指定的工程的名稱,。經(jīng)過這一步就可以修改工程所用的資源了,。

     如果你的程序不是由向?qū)傻模敲碬editRes會提示你輸入資源文件的文件名,,輸入一個名稱后點擊“OK”,,這時WeditRes會說不能打開這個資源文件,沒有關(guān)系,,這是因為這個目錄下的確是沒有資源文件的,,還是在這個對話框中點擊“OK”,然后在“File”菜單中選擇“New”項,,這樣就會為你的工程創(chuàng)建一個新的資源工程,,鍵入一個工程名,一般情況是和應(yīng)用程序的工程名相同,,然后點擊“Validate”,,現(xiàn)在你需要手工在應(yīng)用程序工程列表里添加這個資源文件(一般以“RES”為擴(kuò)展名)。

    在這里試舉一例——我們來為我們上面創(chuàng)建的程序創(chuàng)建一個“關(guān)于”對話框資源,。

    運行WeditRes,,輸入頭文件的路徑后選擇“Objects”菜單的“New dialog”項,這時WeditRes會顯示一個對話框,,標(biāo)題欄為“Dialog box parameters”,,改變對話框的標(biāo)題為“About this application”或者隨便其它的什么東西,然后在“Identity”(標(biāo)識符)項鍵入一個你喜歡的東西,,比如:“DLG_ABOUT”,,在“standard buttons”選單中選擇“Validate”選項并點擊“OK”關(guān)閉對話框。

    你在這個時候應(yīng)該可以看到一個新的對話框和一個浮動的工具條,,在對話框中也應(yīng)該有一個按紐,,你可以用鼠標(biāo)拖動它來重新指定它的位置,,如果你還想改變按紐上顯示的文字——雙擊它打開屬性對話框,或者先選定它,,然后在浮動工具條下改變顯示文字,。

    下面我們添加一個靜態(tài)文本標(biāo)簽,在工具條上選擇文本工具,,光標(biāo)形狀變成由一個矩形包圍的指針,,在對話框的窗體上點擊一下,一個包含文本——“Text”——的矩形會出現(xiàn)在你點擊的地方,,可以通過鼠標(biāo)拖動來改變這個文本框的大小,,同樣也可以改變顯示的文本和文本框的位置。

    我們還可以在這個對話框中添加其它的裝置,??招姆娇颉嵭姆娇蚝徒M件盒等可以對這個對話框進(jìn)行一些簡單的裝飾,。如果你想要刪除一個裝置,,選定它然后按[Ctrl] + [X],或者選擇“Edit”菜單的“Cut”項,。還可以選擇“Options”菜單的“Test”項測試這個對話框的外觀,。在工具欄里有一個按紐的功能是相同的,就是看起來象一個開關(guān)的那個,,如果想要繼續(xù)編輯這個對話框,只要再次選擇上述選項一次即可,。

    編輯完成后在“File”菜單中選擇存盤,,然后關(guān)閉WeditRes,為了顯示這個對話框下面我們必須在程序中包含相應(yīng)的代碼,。

    尋找“OnCommand”語句,,在那里肯定有一個switch語句的條件之一是菜單命令“Exit”的(IDM_EXIT),現(xiàn)在我們?yōu)槲覀兊男聦υ捒蛱砑右粋€新的case條件,輸入如下代碼:

case IDM_ABOUT:
    DialogBox (hInst, MAKEINTRESOURCE(DGL_ABOUT), hwnd, AboutDlgProc);
    break;

    我們還需要編寫對話框函數(shù),。

BOOL CALLBACK AboutDlgProc (HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
  switch (msg)
  {
    case WM_COMMAND:
      if (LOWORD(wParam) == IDOK)
      {
        EndDialog(hwnd,0);
        return TRUE;
      }
      break;
  }
  return FALSE;
}

    你應(yīng)該已經(jīng)明白了,,由向?qū)砩纱a要簡單得多!現(xiàn)在編譯,、鏈接這個程序,,然后運行它,選擇“Compiler”中的“Execute prj.exe”項,,我們創(chuàng)建的對話框?qū)@示在屏幕上了,。

 

添加其它類型的資源
    你還需要知道如何添加其它資源,如圖標(biāo)等,。
    事實上WeditRes還不能編輯圖標(biāo)文件,,作者說正在做這方面的工作。所以你可能要使用其它的工具來完成圖標(biāo)編輯的工作。

    在資源創(chuàng)建完后,,你要把它添加到工程的資源描述文件里面去,。如果你是使用向?qū)?chuàng)建的工程。你只須要打開與工程名相同的*.RC文件就可以了,。

    如果你沒有使用向?qū)?,那么你只能新?chuàng)建一個RC文件。如果你是使用WeditRes創(chuàng)建的資源,,在建立資源描述文件時有些事情是你必須知道的——必須包含WeditRes資源,,甚至于你并沒有使用任何由WeditRes創(chuàng)建的資源,你完全有可能在后續(xù)的工作中用到,,我建議無論什么情況都應(yīng)該象下面這樣做,。

    WeditRes一般要建立三個文件:一個*.DLG文件、一個*.H頭文件和一個*.RES二進(jìn)制資源文件,。DLG文件描述了由WeditRes創(chuàng)建的資源的定義(如:資源串,、菜單和對話框等),H文件是所有資源的符號名的定義,,RES文件是編譯后的二進(jìn)制資源文件,,這個文件將被鏈接到工程最后生成的可執(zhí)行程序中。

    資源描述文件(*.RC)的文件名一定要和RES文件的文件名相同,,當(dāng)Lcc-Win32的資源編譯器(lrc.exe)編譯資源時將覆蓋原來的RES文件,。你可以在Wedit中創(chuàng)建資源描述文件,如下:

#include <windows.h>
#include "resources.h"
#include "resources.dlg"

    第一行用來包含標(biāo)準(zhǔn)的Windows頭函數(shù),,在這個頭函數(shù)中定義了資源編譯器需要的信息,。

    第二行包含由WeditRes產(chǎn)生的資源的符號名的頭文件,我在這里假定你的資源工程名為“resurces”,,可以改為你所定義的名稱,。第三行是WeditRes產(chǎn)生的資源描述文件,這樣不會丟失你已經(jīng)創(chuàng)建了的資源,。

    下面你可以向資源描述文件中增加資源,,下面是一個例子:

IDI_MYICON ICON myiconfile.ico

    這一行定義了圖標(biāo)資源,在使用前,,一定要定義圖標(biāo)的符號名,。比如在“prjwiz.h”文件(或者“resource.h”,如果你沒有使用向?qū)В┲?,如果你沒有定義這個符號名,,那么編譯器將認(rèn)為它是一個字符串名。

    添加光標(biāo)或者位圖資源的步驟是相同的,,只要把關(guān)鍵字改為“BITMAP”或者
“CURSOR”,。

    下面要做的是把資源描述文件包含在工程文件列表中,,當(dāng)下一次你編譯工程,資源編譯器也將編譯這個資源描述文件,,并把產(chǎn)生的二進(jìn)制資源鏈接到執(zhí)行文件內(nèi),。

    這樣你可以添加圖標(biāo)、光標(biāo)和位圖資源,,對于其它類型的資源可以使用RCDATA資源方式添加到資源文件內(nèi),,就是一系列的由逗號分隔的數(shù)值信息,這種方式可以使Lcc-Win32的資源編譯器不支持的資源得以添加到資源文件中去,,比如WAV文件等,。

 

使用非規(guī)格資源
    Lcc-win32的資源編譯器可以使用各種類型的資源,如對話框,、菜單,、圖標(biāo)等,但是它不能使用其它非規(guī)格的資源如多媒體文件(WAV,,MID等等),。
    你可能認(rèn)為使用其它的資源編譯器如微軟在Win32 SDK中提供的資源編譯器,或者其它的什么東西,。

    但是這里的麻煩事是LCCLINK,,因為它并不認(rèn)識這些資源,因此也不可能把這些資源鏈接到你的執(zhí)行文件中去,,這和真是個大問題,,你可能不得不使用其它的鏈接器,這意味著可能需要其它類性的入口庫,。

    我認(rèn)為這樣做不是一個好的解決方案,,主要的原因是Wedit不是設(shè)計成可以使用其它的鏈接器的,你將不得不在命令行下編譯你的程序,,放棄了Lcc-Win32 IDE提供的全部優(yōu)點,。

    但是這里還是有一個可供選擇的方案,,——幸運的是LRC支持RCDATA資源類型,,這種資源類型用來包含二進(jìn)制數(shù)據(jù)類型的資源,使用一系列的數(shù)字列表表示,。

    下面是具體的實現(xiàn)方法:

    首先你需要轉(zhuǎn)換你要使用的二進(jìn)制文件到有一系列的有逗號分割數(shù)值表示的文本文件,,LRC缺省的認(rèn)為這些數(shù)據(jù)是16位長的,它同時也支持32位長度的整數(shù),,只要在數(shù)值后添加“L”字符就可以了,。

    你可以從這里下載做這些工作的轉(zhuǎn)換器:

Bin2Txt: 開發(fā)者:Josef Planeta. 十分的靈活方便;
TextIt: 本文作者開發(fā),,可以一次轉(zhuǎn)換多個文件,。
    這兩個工具都帶有源碼,,使用Lcc-Win32開發(fā)。

    然后一定要在資源數(shù)據(jù)中包含這些整數(shù)列表,,如果你的資源文件沒有使用資源描述文件,,如果你沒有使用向?qū)晒こ蹋@是有很大可能的,。你一定要建立一個資源描述文件,,一般是這個樣子的:

#include <windows.h> //basic Windows header file
#include "resources.h" //resource identifiers (generated by WeditRes)
#include "resources.dlg" //resource scripts (generated by WeditRes)

MySound RCDATA
BEGIN
#include "mysound.txt"
END

    在這個例子中,我們包含了一個叫做“mysound.txt”的文件,,這個文件是由一個WAV文件轉(zhuǎn)換成的數(shù)據(jù)文件,。

    要注意當(dāng)前版本的LRC(V981126)在RCDATA資源的大小上是有限制的,如果任何一個數(shù)據(jù)文件大于70Kb,,你有可能得到一個溢出信息(Overflow in resource data),,在未來的版本中可能會有所改進(jìn),但是在目前如果出現(xiàn)了這種情況可能只有使用其它的資源編譯器了,。

    使用RCDATA類型定義資源意味著你不能直接的指定PlaySound來播放這些資源,,因為類型是不同的。

    解決辦法是手工把這些數(shù)據(jù)讀入內(nèi)存,,下面的代碼說明了在PlaySound時要做的事情:

BOOL PlayRcSound (HINSTANCE hInst, LPCTSTR lpszSndName)
{
  HRSRC hr;
  HGLOBAL hg;
  LPVOID lpSndData;

  hr = FindResource (hInst, lpszSndName, RT_RCDATA);
  if (hr != NULL)
  {
    hg = LoadResource (hInst, hr);
    if (hg != NULL)
    {
      lpSndData = LockResource (hg);
      if (lpSndData != NULL)
      {
        return PlaySound((LPCTSTR)lpSndData, NULL, SND_MEMORY);
        /* We do not need to unlock or unload the resource, */
        /* Windows will take care of this */
      }
    }
  }
  return FALSE;
}

    如果你的資源在頭文件中定義有標(biāo)識符,,叫做:ID_MYSOUND,那么調(diào)用函數(shù)的方式應(yīng)該是:


PlayRcSound (hInst, MAKEINTRESOURCE(ID_MYSOUND));

    另外,,如果你給出了一個字符串名,,比如:MySound,函數(shù)調(diào)用如下所示:


PlayRcSound (hInst, "MySound");

 

靜態(tài)庫和動態(tài)庫
    也許程序員就是喜歡比喻以類的修辭的,,庫的概念就是一個例子,,它是用來存儲可能在許多的程序中使用的代碼,或者一部分十分專業(yè)的代碼,,只要寫一次就可以了,,甚至是由其他的人為你寫的代碼,這樣使用這些代碼而完全不用關(guān)心具體的實現(xiàn)細(xì)節(jié),。
    和其它的Windows編譯器一樣,,LCC-Win32也支持兩種庫——動態(tài)庫和靜態(tài)庫。

    靜態(tài)庫包含的代碼在編譯鏈接時將被添加在可執(zhí)行文件中,,它被稱為“靜態(tài)”庫是因為一旦它鏈接到可執(zhí)行文件中,,就將不可改變(除非重新編譯整個程序)。

    而動態(tài)鏈接庫不會由編譯器鏈接到可執(zhí)行文件中,,而是在運行時由操作系統(tǒng)鏈接的,,這樣即使你改變了這個庫,也不會使整個可執(zhí)行程序重新編譯,。

    靜態(tài)庫的編寫要簡單些,,只要創(chuàng)建一個類型為“Static library (lib)”的新工程,,添加你要在這個靜態(tài)庫中使用的原始資料——函數(shù)、數(shù)據(jù)等等,,編譯后就會得到一個LIB文件,,這個文件里面包括了所有你指定的函數(shù)和數(shù)據(jù)。如果你要使用這些函數(shù)或者數(shù)據(jù),,在“Configuration”對話框中的“Linker”表里的“Additional libraries”項中指定靜態(tài)庫名稱,,通知編譯器把這個靜態(tài)庫鏈接到工程里去,但是千萬不要忘了把你的靜態(tài)庫放到鏈接器能夠找到的地方,,比如:“\lcc\lib”路徑下,。

    動態(tài)鏈接庫就有些麻煩了,你要使用兩個文件而不是一個文件:動態(tài)庫本身——DLL文件和關(guān)聯(lián)入口庫——LIB文件,。入口庫是給鏈接器使用的,,簡單的說它使用來哄騙鏈接器的,同時它也包含了使Windows正確的調(diào)用相應(yīng)動態(tài)庫中的函數(shù)的信息,。

    而且,,動態(tài)庫的功能可以更加的強大,它有一個LibMain()函數(shù),,在程序每一次調(diào)用它時都要通過它來進(jìn)行初始化的工作,。

    要創(chuàng)建一個動態(tài)鏈接庫,你要創(chuàng)建一個DLL工程,,然后你可以使用向?qū)蒐ibMain()函數(shù),。添加你要使用的函數(shù)和數(shù)據(jù),在編譯這個工程后,,你就可以得到DLL庫和接口庫文件,。

    如果要使用動態(tài)鏈接庫,象使用靜態(tài)庫一樣,,要將接口庫放在“\lcc\lib”路徑下,,在“Options”對話框中添加這個接口庫。同時也要把DLL文件放置在Windows能夠搜索到的路徑下,,Windows搜索動態(tài)鏈接庫的缺省目錄是“\windows\system\”和應(yīng)用程序的起始目錄,,將動態(tài)鏈接庫放置在這兩個目錄下都是可以的。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多