第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

為什么最后顯示的結(jié)果為-1?

為什么最后顯示的結(jié)果為-1?

API
函數(shù)式編程 2022-11-19 12:08:36
首先進(jìn)行聲明:  [DllImport("USER32.dll", EntryPoint = "GetMenuItemCount", CharSet = CharSet.Unicode)]private static extern int apiGetMenuItemCount(IntPtr hMenu);然后我再類(lèi)里面定義了一個(gè)菜單,并給它添加了一系列菜單項(xiàng):this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {this.sfToolStripMenuItem,this.sdfToolStripMenuItem,this.sdfToolStripMenuItem1});this.contextMenuStrip1.Name = "contextMenuStrip1";this.contextMenuStrip1.Size = new System.Drawing.Size(95, 70);最后調(diào)用API方法獲得它的菜單項(xiàng)的數(shù)目并顯示:MessageBox.Show(apiGetMenuItemCount(this.contextMenuStrip1.Handle).ToString());到網(wǎng)上找了,但好像都是用它來(lái)操作系統(tǒng)菜單的,可是我想知道怎么操作普通菜單?這段代碼錯(cuò)在哪里,希望大家能給點(diǎn)指點(diǎn),謝謝!還有,發(fā)現(xiàn)用EableMenuItem方法可以禁止頁(yè)面關(guān)閉按鈕,但對(duì)最大化和最小化按鈕卻沒(méi)用,為什么?各位高手,幫幫忙?。。?!謝謝?。。≈x謝
查看完整描述

2 回答

?
蝴蝶不菲

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊

apiFindWindowEx(this.Handle, p, "Edit", "");
上面的Edit 是類(lèi)名,如果你不知道標(biāo)題,需要用NULL,而不是""
寫(xiě)成 apiFindWindowEx(this.Handle, p, "Edit", null);

類(lèi)名,需要查的,.NET 里面的 TEXTBOX 的類(lèi)名不是 Edit,而是類(lèi)似

WindowsForms.10.Edit.xxxxxxx.xx 的樣子,具體的名字,可以用 spy++ 查看
上面的10代表VS的版本,10代表2010,9代表2008,8代表2005

---------------------------------------------------------
你的理解發(fā)生了偏差。

this.contextMenuStrip1.Handle 這個(gè)句柄是 這個(gè)菜單相對(duì)于當(dāng)前窗體的句柄,是個(gè)內(nèi)部指針。

GetMenuItemCount 里面需要的菜單的句柄是這個(gè)窗體的菜單對(duì)應(yīng)于系統(tǒng)級(jí)別的指針, 這個(gè)句柄,需要用 API 函數(shù) FindWindowEx 來(lái)獲取


查看完整回答
反對(duì) 回復(fù) 2022-11-22
?
藍(lán)山帝景

TA貢獻(xiàn)1843條經(jīng)驗(yàn) 獲得超7個(gè)贊

一、在VB中聲明API函數(shù)有兩種方法:如果我們只在某個(gè)窗體中使用API函數(shù),我們可以在窗體代碼的
General部分聲明它:

  聲明的語(yǔ)法是:
  Private Declare Function ...
  Private Declare Sub.....
  這里必須采用Private聲明,因?yàn)檫@個(gè)API函數(shù)只能被一個(gè)窗體內(nèi)的程序所調(diào)用。

  如果我們的程序有多個(gè)窗體構(gòu)成,而且我們需要在多個(gè)窗體中使用同一個(gè)API函數(shù),就需要在模塊中
聲明了。
  先添加一個(gè)模塊(如圖示),
  然后采用如下語(yǔ)法聲明:
  Public Declare Function....
  Public Declare Sub....
  Public聲明的含義是把API函數(shù)作為一個(gè)公共函數(shù)或過(guò)程,在一個(gè)工程中的任何位置(包括所有的窗
體和模塊)都能直接調(diào)用它。聲明完畢我們就能在程序中使用此API函數(shù)了。

  二、可采用以下幾種方式使用API函數(shù),以SetWindowPos函數(shù)為例:
 ?。?)忽略函數(shù)返回值的調(diào)用:
    SetWindowPos Form1.hWnd, -2 ,0 ,0 ,0, 0, 3
  注意此時(shí)函數(shù)的參數(shù)是不加括號(hào)的。
 ?。?)Call方法調(diào)用:
    Call SetWindowPos(Form1.hWnd, -2, 0, 0, 0, 3)
  注意這里需要加上括號(hào),但我們不取回函數(shù)的返回值。
 ?。?)取得函數(shù)返回值的調(diào)用:
    MyLng = SetWindowPos(Form1.hWnd, -2, 0, 0, 0, 3)
  此時(shí)需要加上括號(hào),而且我們必須事先定義一個(gè)變量(變量的類(lèi)型與函數(shù)返回值類(lèi)型相同)來(lái)存儲(chǔ)
API函數(shù)的返回值。

  三、幾個(gè)問(wèn)題的說(shuō)明:

 ?。?)聲明中的Lib 和 Alias 是怎么回事
  一般情況下WIN32API函數(shù)總是包含在WINDOWS系統(tǒng)自帶的或是其它公司提供的動(dòng)態(tài)連接庫(kù)DLL中,而
Declare語(yǔ)句中的Lib關(guān)鍵字就用來(lái)指定DLL(動(dòng)態(tài)連接庫(kù))文件的路徑,這樣VB才能找到這個(gè)DLL文件,然
后才能使用其中的API函數(shù)。如果我們只是列出DLL文件名而不指出其完整的路徑的話(huà),VB會(huì)自動(dòng)到.EXE文
件所在目錄、當(dāng)前工作目錄、WINDOWS\SYSTEM目錄、WINDOWS目錄下搜尋這個(gè)DLL文件。所以如果所要使用
DLL文件不在上述幾個(gè)目錄下的話(huà),我們應(yīng)該指明其完整路徑。
  Alias用于指定API函數(shù)的別名,如果我們調(diào)用的API函數(shù)要使用字符串(參數(shù)中包含String型)的話(huà)
,Alias關(guān)鍵字是必須的。這是因?yàn)樵贏(yíng)NSI和Unicode字符集中同一API函數(shù)的名稱(chēng)可能是不一樣的,為了
保證不出現(xiàn)聲明錯(cuò)誤,我們使用Alias關(guān)鍵字指出API函數(shù)的別名,一般來(lái)說(shuō)在WIN9X平臺(tái)下我們把API函數(shù)
名后加一個(gè)大寫(xiě)A作為別名即可。

  (2)常見(jiàn)的API參數(shù)類(lèi)型的說(shuō)明
  API函數(shù)的參數(shù)中最常見(jiàn)的是長(zhǎng)整Long型數(shù)據(jù)類(lèi)型,例如API中的句柄、一些特定的常量、函數(shù)的返回
值都是此類(lèi)型 的值;另外幾種常見(jiàn)的參數(shù)類(lèi)型有:整型Integer、Byte型、String型等。

 ?。?)聲明中的ByVal是作什么用的
  這跟VB的參數(shù)傳遞方式有關(guān),在默認(rèn)情況下VB是通過(guò)地址傳遞方式傳遞函數(shù)的參數(shù)、而有些API函數(shù)
要求必須采用傳值方式來(lái)傳遞函數(shù)參數(shù)(這兩種參數(shù)傳遞方式是不同的,前者傳遞的是一個(gè)指針,而后者
要求是參數(shù)真實(shí)的值)。這樣就會(huì)發(fā)生錯(cuò)誤,解決的辦法是在A(yíng)PI函數(shù)參數(shù)聲明的前面加上ByVal關(guān)鍵字,
這樣VB就采用傳值方式傳遞參數(shù)了。

 ?。?)怎樣得到完整的API函數(shù)聲明
  VB自帶了API文本查看器API TEXT VIEWER,我們可以在其中找到API函數(shù)的完整聲明,然后把它粘貼
到程序中即可。

 


查看完整回答
反對(duì) 回復(fù) 2022-11-22
  • 2 回答
  • 0 關(guān)注
  • 195 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)