日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(转)MFC技巧学习五

發布時間:2023/12/2 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (转)MFC技巧学习五 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

51. 如何獲得其他程序的圖標,并顯示在View中
 [問題提出]
 有的時候,如:類資源管理器會遇到獲得程序圖標并顯示的操作,如何實現呢?
 [解決方法]
 SDK函數SHGetFileInfo來獲得有關文件的很多信息:如大小圖標,屬性,類型等.
 [程序實現]
 建立名為My的SDI工程.在OnPaint()函數中加入:


 說明:_T("NotePad.exe")指的是要獲得什么程序的圖標.
 或者在OnDraw()中(此時必須保證沒有OnPaint()函數,想想為何?)


52 .RichEdit
在Dialog(FormView中打開)中加入CRichEdit控件后,這個dialog 為什么打不開如何處理?
 [解決方法]
 在函數:InitInstance的第一句加入AfxInitRichEdit();

53. 如何使FormView中顯示dialog時,不是凹的?
 [問題提出]
 為什么FormView中顯示dialog時,是凹的,能不能不這樣
 [解決方法]
 在Dialog的屬性中:
  增加屬性WS_BORDER  或者 WS_EX_WINDOWEDGE
 用程序實現:
 pView->ModifyStyle(,WS_BORDER) 或者pView->ModifyStyleEx(,WS_EX_WINDOWEDGE )

54. 如何改變窗口標題?
 [問題提出]
  在應用程序的不同運行時期,要反映當前狀態往往會修改應用程序標題.
 [解決方法]
  在MFC類庫中提供了CWnd::SetWindowText函數,通過該函數可以改變任何窗體(包括控件)的標題.
  改變主窗體的標題:

當改變多視MDI的子窗口的標題時,用:

  當改變按鈕的標題時(假設按鈕的ID=IDC_BUTTON1):

  運行看看.

55.圖標透明
(1).Windows中的圖標其實是有兩個圖像組成的,其中一個用于與它要顯示的位置的圖像做“AND”操作,另一個作“XOR”操作。
透明:用“白色”AND,用“黑色”XOR
反色:用“白色”AND,用“白色”XOR
正常色:用“黑色”AND,用正常顏色XOR.
(2). WIN9X中好像是對像素的操作實現透明的
WIN2K中就有API直接實現透明了!
WIN2K中
GetWindowLong
SetWindowLong
SetLayeredWindowAttributes
三個API就可以實現透明了!
(3)


56.ASSERT()是干什么用的
ASSERT()是一個調試程序時經常使用的宏,在程序運行時它計算括號內的表達式,如果表達式為FALSE (0), 程序將報告錯誤,并終止執行。如果表達式不為0,則繼續執行后面的語句。這個宏通常原來判斷程序中是否出現了明顯非法的數據,如果出現了終止程序以免導致嚴重后果,同時也便于查找錯誤。例如,變量n在程序中不應該為0,如果為0可能導致錯誤,你可以這樣寫程序:
  ......
  ASSERT( n != 0);
  k = 10/ n;
  ......
  ASSERT只有在Debug版本中才有效,如果編譯為Release版本則被忽略。
  assert()的功能類似,它是ANSI C標準中規定的函數,它與ASSERT的一個重要區別是可以用在Release版本中。

56. 將RADIO控件初始狀態設置成為選中
1、"在OnInitialDialog中用CButton::CheckRadioButton(...)
2、"在OnInitialDialog中用CButton::SetCheck(...)
3、"關聯一個整型值,在構造函數中設為0。


57.獲得視圖


58.如何得到屏幕的真實尺寸
[問題提出]
我的屏幕是1024*800,如何得到屏幕的真實大小,我用GetSystemMetrics(SM_CYFULLSCREEN)得到的高度總是小于800
[問題解答]
GetSystemMetrics(SM_CYFULLSCREEN)得到的只是屏幕用戶區的大小。要得到屏幕的真實大小需要使用
GetDeviceCaps函數,該API函數原型是這樣的:
int GetDeviceCaps(
 HDC hdc,   // handle to DC
 int nIndex  // index of capability
);


59. 修改標題欄高度
NONCLIENTMETRICS nm
調用SystemParametersInfo(SPI_GETNONCLIENTMETRICS,sizeof(nm),&nm,0)
重設SystemParametersInfo(SPI_SETNONCLIENTMETRICS,sizeof(nm),&nm,0)

60. 如何實現“氣球式”工具提示。
本程序介紹一個與CToolTipCtrl相似的類CTooolTipWnd。
使用該類的方法如下:
1. 增加ToolTipWnd.cpp到工程文件。
2. 在頭文件中添加#include "ToolTipWnd.h" 。 
3. 在類聲明中添加:
CToolTipWnd m_BalloonToolTip;
4. 在OnInitDialog(對話框)或OnInitialUpdate(表單視)中添加下面代碼:

eg.
  第三個參數為可選,缺省為RGB(0, 0, 0)。缺省文本顏色可以用SetDefTextColor進行設置。
4. 重載PreTranslateMessage并添加下面代碼:

?

61. dlg 上建立View的方法:


62. 窗口最大化、最小化及關閉的消息是什么?如何截獲?
最大化、最小化將發送WM_SYSCOMMAND消息。要處理該消息,可以這么做:
  1、在Form的頭文件中添加:


  2、在Form的單元文件中添加:

  關閉窗口的消息為WM_CLOSE,C++Builder提供了OnClose事件。


63. 如何遍歷整個目錄樹查找文件
在應用程序的開發過程中,會遇到如何查找某一文件以確定此文件路徑的問題。利用CFileFind類可以比較方便地在當前目錄下進行文件查找,但卻不能對其子目錄中的文件進行搜尋。而實際應用中往往需要對某一整個目錄樹,甚至是整個C盤或D盤驅動器進行文件搜尋。通過實踐,我們在Visual C++ 6.0中編程實現了如何遍歷任意目錄樹,以查找某一特定的文件。
  在下面的具體陳述中可以看到,在確定要查找的文件名和要進行搜索的目錄的名稱后,將調用函數Search_Directory進行文件的查找。首先依次查找當前目錄下的每一個實體(文件或是子目錄),如果是某一子目錄,則進入該子目錄并遞歸調用函數Search_Dirctory進行查找,查找完畢之后, 再返回上一級目錄;如果不是子目錄而是某一文件,則判斷其是否就是我們要查找的文件,如果是則輸出其完整的文件路徑。這樣,通過Search_Directory函數的反復遞歸調用,就可以實現對整個目錄,包括子目錄的遍歷搜索。下面將舉例詳細講述如何在VC++中編程實現在整個目錄樹中的文件查找。
  1. 在Visual C++ 6.0(VC++ 5.0與之類似)中用默認方式創建了一基于對話框的應用程序Search。在主窗口對話框上放置一命令按鈕,其Caption為“Search File”,ID為ID_BUTTON_SEARCH。單擊此按鈕將完成文件的查找工作。
  2. 利用ClassWizard為“Search File”按鈕的BN_CLICKED 事件添加處理函數OnButtonSearch,代碼如下:

  3. 在CSearchDlg類中增加成員函數Search_Directory,它將完成具體的文件查找工作,代碼如下:

  這樣我們就可以對整個目錄進行遍歷搜索,查找某一特定的文件,并輸出顯示其完整的文件路徑。以上的程序在Visual C++ 6.0中已調試通過。


64. Richedit control的設置背景圖片辦法
1:繼承CRichEditCtrl::OnEraseBkgnd(CDC* pDC)消息事件中,給Richedit控件繪制上背景圖片:

m_bmpBackground.DrawDIB(pDC, 0, 0, rc.Width(), rc.Height());

當然也可以通過subclass richedit window之后,在回調函數中處理WM_ERASEBKGND消息。
2:設置了Richedit控件的透明屬性;
3:依照kenwhale所說的,Hook了GDI32.DLL中的ExtTextOut函數,將RichEdit的text-output options去除ETO_OPAQUE style。綜上所述,即可實現RichEdit控件的背景圖片效果。
據此,我還實現了RichEdit控件背景繪制AVI動畫效果。

65. MFC程序中如何創建多級目錄

轉載于:https://www.cnblogs.com/leven20061001/archive/2012/10/17/2728176.html

總結

以上是生活随笔為你收集整理的(转)MFC技巧学习五的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。