目前我自己只知道三種方法
一、LoadBitmap
功能:
可從一個執行模塊中載入指定的位圖。
原型:
HBITMAP LoadBitmap(
__in HINSTANCE hInstance,
__in LPCTSTR lpBitmapName
);
參數:
hInstance [in]
包含位圖的模塊句柄
lpBitmapName [in]
以’\0’結尾的字符串,包含將要載入位圖資源名字。可使用MAKEINTRESOURCE將資源ID號轉換。
返回值:
如果成功,返回位圖句柄,否則返回NULL。
備注:
如果文件名不存在或內存不足,函數執行失敗。
當不再使用LoadBitmap對象時,調用DeleteObject刪除該對象。
示例:
HBITMAP hBitmap = LoadBitmap(g_hInstance, MAKEINTRESOURCE(IDB_BMP));
二、SHLoadImageResource
功能:
將視圖文件轉換成位圖文件。視圖資源文件必須在資源文件中包含。
原型:
HBITMAP SHLoadImageResource (
HINSTANCE hinst,
UINT uIdImageFile
);
參數:
hinst
【in】資源句柄
uIdImageFile
【in】視圖文件標號
返回值:
如果成功,返回位圖句柄,否則返回NULL。
備注:
轉換文件的類型包括GIF、PNG、JPG、ICO、BMP
當不再使用SHLoadImageResource對象時,調用DeleteObject刪除該對象。
示例:
HBITMAP hBitmap = SHLoadImageResource(g_hInstance, IDR_IMAGE);
三、SHLoadImageFile
功能:
讀取視圖文件,解壓并返回位圖句柄。
原型:
HBITMAP SHLoadImageFile (
LPCTSTR pszFileName
);
參數:
pszFileName
[in] 將要載入的視圖文件名
返回值:
如果成功,返回位圖句柄,否則返回NULL。
備注:
轉換文件的類型包括GIF、PNG、JPG、ICO、BMP
當不再使用SHLoadImageResource對象時,調用DeleteObject刪除該對象。
示例:
HBITMAP hBmp = SHLoadImageFile(
(TEXT("\\My Documents\\My Pictures\\Waterfall.jpg")));
posted @
2009-04-22 20:45 Sandy 閱讀(2059) |
評論 (0) |
編輯 收藏
摘要: SHELLEXECUTEINFO 和 ShellExecuteEx的簡單使用
閱讀全文
posted @
2009-04-22 14:02 Sandy 閱讀(35452) |
評論 (0) |
編輯 收藏
轉: http://tech.ddvip.com/2008-09/122062103760957.html
程序中如果要
使用http或socket連接服務器,需要先連接網絡。ConnMgrEstablishConnectionSync函數中的CONNMGR_CONNECTIONINFO參數,不論采用IID_DestNetWAP還是IID_DestNetInternet,似乎都要依賴于
手機上的接入點設置。都怪中國移動非要搞什么CMNET、CMWAP,中國特色的通信公司。
可以自行創建一接入點。以下代碼創建一個CMWAP接入點:
CString strFavoriteXml =
L"<wap-provisioningdoc>"
L"<characteristic type="CM_Networks">"
L"<characteristic type="Test_GPRS">"
L"<parm name="DestId" value="{D1D06580-C364-55ec-9421-6ACF34129C58}" />"
L"</characteristic>"
L"</characteristic>"
L"<characteristic type="CM_GPRSEntries">"
L"<characteristic type="Test_GPRS">"
L"<parm name="DestId" value="{D1D06580-C364-55ec-9421-6ACF34129C58}" />"
L"<characteristic type="DevSpecificCellular">"
L"<parm name="BearerInfoValid" value="1" />"
L"<parm name="GPRSInfoValid" value="1" />"
L"<parm name="GPRSInfoProtocolType" value="2" />"
L"<parm name="GPRSInfoL2ProtocolType" value="PPP" />"
L"<parm name="GPRSInfoAccessPointName" value="cmwap" />"
L"<parm name="GPRSInfoAddress" value="" />"
L"<parm name="GPRSInfoDataCompression" value="1" />"
L"<parm name="GPRSInfoHeaderCompression" value="1" />"
L"<parm name="GPRSInfoParameters" value="" />"
L"</characteristic>"
L"</characteristic>"
L"</characteristic>"
L"<characteristic type="CM_ProxyEntries">"
L"<characteristic type="WAP">"
L"<parm name="SrcId" value="{D1D06580-C364-55ec-9421-6ACF34129C58}" />"
L"<parm name="DestId" value="{436EF144-B4FB-4863-A041-8F905A62C572}" />"
L"<parm name="Proxy" value="10.0.0.172:80" />"
L"<parm name="Enable" value="1" />"
L"<parm name="Type" value="1" />"
L"</characteristic>"
L"</characteristic>"
L"</wap-provisioningdoc>";
LPWSTR pszwXMLout = NULL;
HRESULT hr = DMProcessConfigXML(strFavoriteXml, CFGFLAG_PROCESS, &pszwXMLout);
if ( pszwXMLout )
{
delete [] pszwXMLout;
pszwXMLout = NULL;
}
posted @
2009-04-21 14:54 Sandy 閱讀(957) |
評論 (0) |
編輯 收藏
在
http://radovi.javaeye.com/blog/322096這篇博客里談到計算機計算浮點數時的舍入誤差,我也在VS2005下進行了相應的實驗,如下代碼:
#include <iostream>

using namespace std;

int main()


{
double f = 4.35;

int a = int(f*100);

cout << a << endl;

system("pause");
}
的確打印出來的結果是434.
老男孩給出的解釋是這樣的:
這個問題和二進制的表示有很大關系
簡單地說
計算機不能準確表示諸如1/10等一類分數
我查到了一篇文章:
http://support.microsoft.com/kb/214118/zh-cn,如下,
IEEE 754 標準是一種方法很容易操作的壓縮方式存儲浮點數。 Intel coprocessors 和實現浮點數學的大多數基于 PC 的程序使用此標準。
IEEE 754 指定編號,以減少存儲要求,并允許該內置二進制算法指令來處理數據以相對較快速的方式的所有微處理器上可用的二進制格式存儲。 但是,是簡單的、 非重復的十進制數字的某些數字轉換為重復不能存儲的完美的準確性的二進制數字。
例如數 1 / 10 可以表示簡單小數的十進制數字系統中:
.1
但是,二進制格式中的數目將十進制重復的二進制文件:
0001100011000111000111 (和這樣上)
此數字無法表示按有限數量的空間。 因此,此數字向下舍入的大約-2.78E-17 存儲。
如果獲取給定的結果執行多個的算術運算,這些舍入誤差可能具有累積性。
看來是和二進制的表示有很大關系。
posted @
2009-04-15 13:38 Sandy 閱讀(2575) |
評論 (1) |
編輯 收藏
很長時間沒有用Cellular Emulator ,使用上都有一些遺忘. 所以千萬別相信自己什么都能記住啊.
摘自:
http://www.cnblogs.com/upto/archive/2007/02/14/649769.html 黎波老師的博客
posted @
2009-04-15 09:59 Sandy 閱讀(1939) |
評論 (0) |
編輯 收藏
昨天一直在調一段代碼,流程是這樣的:我在某個界面程序里先放置了一個對話框A,用戶選擇是或否。選擇是后,會再彈出一個對話框B,并觸發一個事件,然后再啟動一個對話框C。這些對話框是模態的。
邏輯感覺很對,沒有問題。但是界面的異常讓我是頭疼。A對話框選擇是后,B對話框顯示不完全,在C對戶框顯示的時候,文字顯示又有異常。檢查了一下,原來EndDialog沒有執行成功。使用GetLastError獲取的錯誤值也是正確的。
惆悵了……,后來利用線程,去執行那個事件,界面也正常了。
這是為什么呢?
我個人覺得是事件的執行影響到了界面的刷新,因為我的事件是在界面的程序里面執行的。它對界面消息進行了阻塞,導致界面不能刷新。
這個問題,不是我第一次遇到,以前也遇到過這樣的問題,沒有總結。總結一下,不要再犯了。
posted @
2009-04-14 09:10 Sandy 閱讀(394) |
評論 (0) |
編輯 收藏
Windows Mobile上聯系人的信息可分別存儲在手機和SIM卡中。我嘗試過從手機,即所謂的Outlook聯系人中讀取聯系人的信息,但是還沒有嘗試過從sim卡中讀取聯系人的信息,心里也一直默認為難吧。今天查了一下,發現竟然這么簡單,相比outlook的讀取方式來說,簡單很多。
我們先來定義個結構
typedef struct {
TCHAR szName[32];
TCHAR szTelNum[32];
}CONTACTSTRUCT;
要使用SIM的相關文件,需要包含頭文件 simmgr.h
首先要初始化一下
HSIM lphSim;
HRESULT hr = SimInitialize(0, NULL, 0, &lphSim);
if(FAILED(hr))
{
return;
}
其次獲取總共使用的多少條記錄與總共可以容納的記錄條數
DWORD dwUsed,dwTotal;
hr = SimGetPhonebookStatus(lphSim, SIM_PBSTORAGE_SIM, &dwUsed, &dwTotal);
然后我們讀取聯系人的信息
定義一個
std::vector<CONTACTSTRUCT> vContact;
for(int i=0; i<dwTotal; i++)
{
//對結構初始話以下
SIMPHONEBOOKENTRY phoneent;
memset(&phoneent,0,sizeof(phoneent));
phoneent.cbSize = sizeof(phoneent);
if (SUCCEEDED(SimReadPhonebookEntry(lphSim, SIM_PBSTORAGE_SIM, i+1, &phoneent)))
{
CONTACTSTRUCT tempContact = {0};
wcsncpy(tempContact.szName, phoneent.lpszText, 31); // 姓名
wcsncpy(tempContact.szTelNum, phoneent.lpszAddress, 31); // 電話
vContact.push_back(tempContact );
}
}
//最后別忘了清理
SimDeinitialize(lphSim);
lphSim = NULL;
這里讀取的時候用了dwTotal,是因為聽有經驗的人說,sim卡的存儲可能不連續,如果用dwUsed的話,可能會有問題。
積累一下,有時間再好好看一下outlook聯系人的。
參考文章:
Pocket 中獲取SIM卡中聯系人信息
http://blog.csdn.net/xulg1984/archive/2008/05/30/2497712.aspx
posted @
2009-04-09 15:20 Sandy 閱讀(3079) |
評論 (0) |
編輯 收藏
摘要: 意氣風發、躊躇滿志,不覺感嘆萬千……本文是自己工作6年的經歷沉淀或者經驗提煉,希望對所有的軟件工程師們有所幫助,早日實現自己的人生目標。本文主要是關于軟件開發人員如何提高自己的軟件專業技術方面的具體建議,前面幾點旨在確定大的方向,算是廢話吧。 1、分享第一條經驗:“學歷代表過去、能力代表現在、學習力代表未來。”其實這是一個來自國外教育領域...
閱讀全文
posted @
2009-04-08 13:48 Sandy 閱讀(292) |
評論 (1) |
編輯 收藏
轉自: http://www.cnblogs.com/dotnetearthworm/archive/2009/02/02/1382488.html
.sln:解決方案文件,為解決方案資源管理器提供顯示管理文件的圖形接口所需的信息。
.csproj:項目文件,創建應用程序所需的引用、數據連接、文件夾和文件的信息。
.aspx:Web 窗體頁由兩部分組成:視覺元素(HTML、服務器控件和靜態文本)和該頁的編程邏輯。Visual Studio 將這兩個組成部分分別存儲在一個單獨的文件中。視覺元素在.aspx 文件中創建。
.ascx:ASP.NET的用戶控件(也叫做“pagelets”),是作為一種封裝了特定功能和行為(這兩者要被用在Web應用程序的各種頁面上)的Web頁面被開發的。一個用戶控件包含了HTML、代碼和其他Web或者用戶控件的組合,并在Web服務器上以自己的文件格式保存,其擴展名是*.ascx。ASP.NET里的缺省配置并不允許Web客戶端通過URL來訪問這些文件,但是這個網站的其他頁面可以集成這些文件里所包含的功能。
.aspx.cs:Web 窗體頁的編程邏輯位于一個單獨的類文件中,該文件稱作代碼隱藏類文件(.aspx.cs)。
.cs: 類模塊代碼文件。業務邏輯處理層的代碼。
.asax:Global.asax 文件(也叫做 ASP.NET 應用程序文件)是一個可選的文件,該文件包含響應 ASP.NET 或 HTTP 模塊引發的應用程序級別事件的代碼。
.config:Web.config 文件向它們所在的目錄和所有子目錄提供配置信息。
.aspx.resx/.resx:資源文件,資源是在邏輯上由應用程序部署的任何非可執行數據。通過在資源文件中存儲數據,無需重新編譯整個應用程序即可更改數據。 51aspx.com
.XSD:XML schema的一種.從DTD,XDR發展到XSD
.pdb:PDB(程序數據庫)文件保持著調試和項目狀態信息,從而可以對程序的調試配置進行增量鏈接。
.suo:解決方案用戶選項,記錄所有將與解決方案建立關聯的選項,以便在每次打開時,它都包含您所做的自定義設置。
.asmx:.asmx文件包含 WebService 處理指令,并用作 XML Web services 的可尋址入口點 51aspx。
.vsdisco(項目發現)文件 基于 XML 的文件,它包含為 Web 服務提供發現信息的資源的鏈接 (URL-51aspx )。
.htc:一個HTML文件,包含腳本和定義組件的一系列HTC特定元素.htc提供在腳本中implement組件的機制
來源: .Net中文社區(http://www.aspxcs.net/)
上面是我看到的一些介紹,這里再補充一些:
.clw 支持ClassWizard
.ncb 支持ClassView
.opt 保存工作空間的配置
.aps 支持ResourceView
.bsc 瀏覽器信息文件
.dsp 項目文件
.dsw 工作空間文件
.mak 外部的創建文件
.plg 建立日志文件
posted @
2009-04-08 13:43 Sandy 閱讀(1244) |
評論 (3) |
編輯 收藏
對于warning C4005: 'WINVER' : macro redefinition的處理
在Windows.h中有如下定義:
#ifndef WINVER
#define WINVER 0x0400
#endif
如果你把#define WINVER 0x500置于#include <windows.h>之前,就不會出現警告.
摘自:http://topic.csdn.net/t/20020103/15/456195.html
posted @
2009-04-07 15:22 Sandy 閱讀(8075) |
評論 (0) |
編輯 收藏