vs2008 MFC 開發問題彙總

一、在自定義工具欄時,發現菜單的標題有問題,因而修改工具欄的標題,發如今工具欄建立後調用SetWindowText()根本不起效果。就好象有自動記憶功能同樣。解決:
        Handle WM_NCPAINT message,重繪非客戶區,在其中修改標題就能夠了。
php

        二、網上「 用VS2008 Feature Pack 修改您現有的Visual C++的程序界面 」有不少,在用如下在CMainFrame::OnCreate()函數的最後部分,添加代碼設定當前界面的風格:
      CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOffice2007));
      CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007Luna_Blue);
系統將會出現「Cannot load Style」錯誤!
       調試了很長時間,才找出緣由:
4 #if !defined _AFXDLL
5 TRACE(_T("\r\nImportant: to enable the Office 2007 look in static 
link,\r\n"));
6 TRACE(_T("include afxribbon.rc from the RC file in your 
project.\r\n\r\n"));
7 ASSERT(FALSE);
8 #endif
    須要在方案的RC文件中include afxribbon.rc資源。
      三、問題: 關於vs2008 MFC 類庫設計程序界面的問題: 我在"菜單資源"中修改了一些菜單的標題,同時又添加了幾個菜單項,但在程序編譯運行後個人修改沒有起做用,菜單沒變化!
    VS2008集成了BCG類庫,設計的程序容許用戶在運行時動態修改菜單項,因此它每次運行後都會記住上次的菜單項,這樣你的修改就不起做用了。要解決這個問題,只須要在運行時選擇菜單「View|Toolbars|Customize」,而後在對話框中選擇Menu標籤,而後點擊Reset就能夠了。
     四、在VS2008 MFC Feature Pack類庫設計程序界面時,修改工具條也會出現沒法更新的問題。
    和以上同理,只須要在運行時將自定義工具欄的對話框打開,在其中選擇toolbars選項卡,點擊Reset All按鈕便可實現即時更新。
     五、關於工具條隱藏的問題。
    隱藏工具欄用CFrameWndEx的ShowWindow(SW_HIDE)和ShowPane(FALSE, ...)都可。
    若是程序開始就須要將某個工具條tool隱藏,在OnCreate()中創建工具條後(tool.CreateEx),不能習慣用DockPane(&tool);不然,不管如何這個工具條將會顯示你Dock的位置上。
   6、整數轉換爲字符串,不夠前面補0,如3轉換爲字符串時爲"003"。
     CString   str;   
    int   n=3;   
    str.Format("d",n);

   今天在Visual Studio 2008中調試某個程序時遇到一個奇怪問題html

   就是在某個源文件中設置的斷點總是無效,提示「當前不會命中斷點。源代碼與原始版本不一樣」信息數據庫

   清理項目、重編項目、從新拷貝原文件都解決不了問題安全

   1)「工具」,「選項」,「調試」,「要求源文件與原始版本完成匹配」去掉勾。我沒有用這種方法,總以爲將勾掉不太安全。oracle

   2)經過從新格式化出問題的源文件亦能夠解決,即在VS2005中選擇 「編輯」-「高級」-「設置選定內容的格式」。我用這個方法解決,將源文件所有選定,設置格式便可!ide

  八、oracle10g含有BLOB字段的表用ADO打不開!函數

   用的是微軟的那種oracle鏈接字符串MSDAORA.1!!   要用oracle的才能正常打開含有blob字段的記錄集,即用如下這種:   
  m_pConn->Open(L"Provider=OraOLEDB.Oracle.1;User   ID=pkuwh_za;password=a;Data   Source=223;Persist   Security   Info=False",L"",L"",adOpenUnspecified);
工具

   Oracle   provider   for   OLE   DB   支持BLOB字段,可是對字符數據類型的支持較弱。。好比,若是某個字段爲一串的空格的話,讀取的時候會出現異常。   
  Microsoft   OLE   DB   Provider   for   Oracle   對字符數據類型的支持很強,不會出現上面說的那種狀況,惟一的缺點就是不支持BLOB字段。
spa

  九、客戶端使用oracle10g XE,可是在MFC ADO沒法使用鏈接字符創建鏈接!.net

  我使用的鏈接字符串爲「Provider=OraOLEDB.Oracle.1;Data Source=XE;Password=****;User ID=sys;Persist Security Info=True」,呵呵,明眼人可能發現我使用的用戶名爲sys,在網上一陣查找,才知道oracle在程序中是不能用system,sysdba用戶鏈接數據庫的。在oracle XE中新建一相應權限的用戶,創建鏈接便可。

 十、用PL/SQL進行oracle的備份與恢復很方便。菜單->Tools->export objects便可將須要的各類對象(表、視圖、包等)保存。在須要恢復時,只需菜單->Tools->import objects便可。不過我第一次在備份後進行恢復時,沒有成功。後來發現,我在備份時,連所屬系統的表、視圖等一塊兒備份了,在恢復時,是確定不成功的。在備份時應該用菜單->Tools->export user objects。

 十一、很長時間沒有用Win32 console了,用CL.exe時競出現了「缺乏mspdb80.dll.....」的錯誤!

   在PATH環境變量中添加「C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE」便可。

 十二、CVSListBox控件很好,失去焦點並切換切換有如下規律:

一、在任意item之間切換(包括刪除、移動),先是失去焦點,即iRow=-1;而後再切換成對應Item;
二、若是使用Browse按鈕,在程序中彈出對話框,則控件失去焦點,即iRow=-1;
三、失去焦點並切換是在OnAfterMoveItemDown以前發生,因此必須在移動後從新定位並顯示內容。
四、失去焦點並切換是在OnBeforeRemoveItem以後發生,因此必須設置當前的刪除狀態爲真,確保在切換爲-1時,不觸動保存。

1三、從Oracle、SQLServer中取得註釋:

最近在研究根據表結構生成Java文件的工具,在取得表的字段時如何取得表的各類信息和註釋,這個問題困擾了我,經多方搜尋找到以下資料備用: oracle: user_tab_comments;表註釋 user_col_comments;表字段註釋 以上兩個只能獲取本身用戶的表的註釋信息,若是要訪問本身可以訪問的其餘用戶的表,則須要使用: all_tab_comments;表註釋 all_col_comments;表字段註釋 固然,若是有DBA權限,則可使用 dba_tab_comments;表註釋 dba_col_comments;表字段註釋 dba*和all*最好指定owner條件。

補充:

一、關於vs 2008 中MFC 的xp風格問題

stdafx.h添加以下試試:

引用:
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")

相關文章
相關標籤/搜索