VC下的介面著實難看 有時候我們不得不自己進行控制項的繪製 以前 一直不理解最近再次看了學了一遍終於明白了一點 與大家分享下... 需要原始碼的Q我 尋找一起學VC的朋友 比如說我們要改變一個編輯框的背景 我們響應WM_CTLCOLOR函數 進行OnCtlColor進行修改但是對與 Button控制項就不行了 .. 這時候我們要進行自繪製 相關函數 virtual void DrawItem( LPDRAWITEMSTRUCT
在用VC開發應用程式時,經常會要做一些可以改變大小的對話方塊,而這個時候就要求對話方塊上的控制項會隨著對話方塊大小的改變而改變自己的位置和大小。如果控制項比較少,那可以在對話方塊的OnSize()事件裡面添加代碼,通過計算來調整各個控制項的位置和大小;但是,如果對話方塊上的控制項比較多的話,那這將是一件非常痛苦的事情!要是程式中又有很多可以改變大小的對話方塊,那一個一個的OnSize()寫下來,那會使程式員崩潰的! 為瞭解決這個問題,我寫了一個自動改變控制項位置和大小的對話方塊類ClxDial
為了實現菜單的自繪,花了我幾個小時,其實真正解決後又發現很簡單。實現菜單的自繪只需要三個步驟:第一步:將所有功能表項目設定為MF_OWNERDRAW,即自繪模式第二步:在WM_MEASUREITEM訊息中設定功能表項目的大小第三步:在WM_DRAWITEM訊息中進行功能表項目的繪製問題首先出現在了第一步,我要繪製的是一個操作功能表,即右鍵菜單,要將功能表項目設定為MF_OWNERDRAW,需要用到ModifyMenu函數,起始由於ModifyMenu函數的參數設定錯誤,導致程式怎麼也響應不了WM
關於普通菜單的自繪,網上的例子很多,做的都還不錯,但系統功能表的自繪例子缺很少,主要使用的都是HOOK,以A Revolutionary New Approach to Custom Drawn
做“HOOK檔案開啟/儲存對話方塊”的過程中,我首先研究了介面庫的相關知識。介面庫一般都是由C/C++這種中低級語言編碼,這是因為在Windows下的介面庫實現技術大都以直接操作控制Windows的訊息和調用Windows的API為主,這就是這種中低級語言的優勢了。無論何種介面庫,最為根本的原理就是獲得或者截獲視窗的某些訊息,按照自己的需要處理這些訊息,畫出自己需要的介面。按照Windows下的介面庫的使用方法來分類,可以分為兩種: 1、
HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes, // SD BOOL bManualReset, // reset type BOOL bInitialState,
一、 綜述 Mfc內建的 listctrl 雖然能夠完成一些常用的操作,但是如果對於某些特定的應用,則無能為力,這時候,就學要對空間進行擴充,以實現滿足特定需要的功能。本文闡述了如何?具有自訂行高,而且能夠選擇和編輯的listctrl 控制項。 二、 實現(1) 實現自訂行高。 我們都知道,mfc 內建的 listctrl
可等待定時器問題:1. 需要的函數:CreateWaitableTimer,SetWaitableTimer.前者建立一個可等待定時器控制代碼,後者設定等待定時器觸發的條件.我們可以多次調用SetWaitableTimer來重設可等待定時器.重設後之前的定時器將關閉.2. 主要看兩段代碼:代碼一:(這段代碼在網上出現的機率是較大的)[cpp] view plaincopyprint?HANDLE hTimer = CreateWaitableTimer( NULL,FALSE,NULL );
fsetpos()詳解 函數原型:int fsetpos(FILE *fp, const fpos_t *pos);標頭檔:#include<stdio.h>是否是標準函數:是函數功能:將檔案指標定位在pos指定的位置上。該函數的功能與前面提到的fgetpos相反,是將檔案指標fp按照pos指定的位置在檔案中定位。pos值以內部格式儲存,僅由fgetpos和fsetpos使用。傳回值:成功返回0,否則返回非0。常式如下 應用fsetpos函數定位檔案指標。#include
tsvn 帶有一個命令列程式 subwcrev.exe. 可以對一個指定檔案進行一些宏替換, 比如: 將 $WCREV$ 替換成目前的版本號. 這個是最有用的. 詳細協助見http://tortoisesvn.net/docs/nightly/TortoiseSVN_zh_CN/tsvn-subwcrev-keywords.html 以 vc6 為例, 檔案的版本資訊儲存在 rc 檔案. 編譯成 res 檔案, 然後和其他 obj 一起 link. 現在的思路就是. 編輯 rc 檔案,
1、前言相信不少麻油都已經積累了屬於自己的程式碼程式庫了,不知道是否有過這樣的經曆:A:聽說你上次寫了個通用XXX類庫啊,我正好要用到,麻煩把dll發我一下。B:好的,你等一下,我發給你。。。。。。十分鐘後A:喂,你這個類是怎麼用的啊,有沒有協助文檔啊。B:汗,沒來得及做,我來和你說吧。。。一個好用的類庫,如果能配上一個好的說明文檔(最好還帶搜尋功能),無疑是為自己和他人提供了莫大的方便,有什麼想要的功能,去文檔裡一查,一目瞭然。我最近就碰到了這個問題,甚至更為嚴重的是,有很多很久之前寫的代碼,
1.static_cast在編譯時間期強制轉換,dynamic_cast在運行時期轉換(較安全) 2.static_cast是c語言的強制轉換代替品;dynamic_cast會運行時檢查該轉換是否型別安全,只在多態類型時合法,即該類至少具有一個虛擬方法。其中static_cast是相當於C的強制類型轉換,用起來可能有一點危險。dynamic_cast在轉換前會檢查指標(或引用)所指向對象的實際類型是否與轉換的目的類型相容,如果相容轉換才會發生,才能得到衍生類別的指標(或引用),否則:
開啟一個檔案 :ShellExecute(NULL, NULL, "c://mfc類庫詳解.chm", NULL, NULL, SW_SHOWNORMAL);開啟一個檔案夾: ShellExecute(NULL, NULL, "c://", NULL, NULL, SW_SHOWNORMAL);在資源管理員中開啟: ShellExecute(NULL, "explore", "c://", NULL, NULL, SW_SHOWNORMAL);搜尋一個檔案夾 :
我們在EX10這個工程中,選擇菜單中「Build」→「Rebuild All」,重新編譯所有的工程檔案,可以看到如下輸出:
MFC 定製控制項(Customize Control) 及 MFC CWnd和WIN32 HWND關聯方法 <參考資料 MSDN MFC TNO 15> 文檔將概述MFC中定製自訂控制項的3種方法: 擁有者繪製控制項(Owner Drawing Control and Menu) 自繪製控制項(self drawing control and menu) 和子集化(subclass) 1
MFC類庫提供了CWnd::OnCtlColor函數,在工作架構的子視窗被重畫時將調用該成員函數.因此可以重載WM_CTLCOLOR訊息的響應函數.此函數的原型:afx_msg HBRUSH OnCtlColor(CDC *pDC,CWnd *pWnd,UINT nCtlColor); 參數nCtlColor用於指定控制項的類型,可以是: .CTLCOLOR_BTN 按鈕控制項 .CTLCOLOR_DLG
MFC相關技術說明:<可參閱MSDN MFC TNO 5>MFC 中通過通過不同於SDK的switch的方法來處理WINDOWS訊息,由訊息映射表(Message Map)和虛函數多態來處理指定的表單訊息 1 聲明一個訊息映射表(Message Map)在能處理訊息的類中中添加宏DECLARE_MESSAGE_MAP() 注 深入淺出MFC中有更詳盡系統的概述 這裡只介紹幾個宏定義這個宏實現了3個功能:1 私人資料成員聲明 AFX_MESSAGEMAP_ENTRY
應用程式事件記錄檔中:“C:\windows\system32\test.exe”的啟用上下文產生失敗。 找不到依存性程式集 Microsoft.VC80.MFC,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.762"。 請使用 sxstrace.exe
一、定義一個CImageList m_ImageList;二、初始化載入圖片列表: m_ImageList.Create(18, 18, ILC_COLORDDB | ILC_MASK, 0, 1); CBitmap camer; CBitmap camerg; camer.LoadBitmap(IDB_Video); camerg.LoadBitmap(IDB_VideoGroup); m_ImageList.Add(&camerg,RGB(192, 192,
當解決問題的辦法偏離你的期望時,也許你需要清空一下狼狽的過去,深呼吸,然後嘗試以一種新的態度開始。在高爾夫球場,這稱為"mulligan",在校園運動會,它稱為"do-over",在電腦中,我們稱呼它為"reboot"。從WM到WP7,就是一次reboot.它支援當下流行的開發平台:Silverlight和XNA. 選擇WP7作為目標WP7的程式都是使用.net管制代碼(.NET managed code)編寫的。可以使用C#,vb.net 等等。工具:Studio 2010 Express