锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
WM_SETFONT 0x0030銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆璁劇疆瀛椾綋
WM_INITDIALOG銆0x0110銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆 鍒濆鍖朌ialog
WM_WINDOWPOSCHANGING 0x0046 紿椾綋澶у皬銆浣嶇疆絳夎漿鍙樼殑娑堟伅
WM_NCACTIVATE 0x0086銆銆銆銆銆銆銆銆銆銆鏀瑰彉涓涓潪宸ヤ綔鍖哄煙 sent to a window when its nonclient area needs to be changed to indicate an active or inactive state.
WM_ACTIVATE 0x0006 璁╀綘紿椾綋鏃犳晥銆騫舵縺媧誨瓙紿椾綋
WM_COMMAND銆銆銆0x0111銆(HIWORD(WPARAM))錛?gt;LBN_SETFOCUS(4) ->LBN_KILLFOCUS(5)銆娑堟伅鍛戒護銆ListBox
WM_USER 0x0400 鐢ㄦ埛鑷畾涔夋秷鎭?
WM_NCACTIVATE 0x0086
WM_SHOWWINDOW 0x0018 鏄劇ず紿椾綋
WM_WINDOWPOSCHANGING 0x0046
WM_NCPAINT 0x0085 The WM_NCPAINT message is sent to a window when its frame must be painted.
WM_ERASEBKGND 0x0014 娓呮紿楀彛鑳屾櫙
WM_WINDOWPOSCHANGED 0x0047
WM_GETICON 0x007F 3嬈?nbsp; The WM_GETICON message is sent to a window to retrieve a handle to the large or small icon associated with a window
WM_NCCALCSIZE 0x0083銆 璁$畻鏈虹獥浣撳ぇ灝忓昂瀵?
WM_MOVE 0x0003 縐誨姩
WM_SIZE 0x0005 鏀瑰彉澶у皬
WM_PAINT 0x000F 緇樺埗紿椾綋
WM_CTLCOLORBTN 0x0135 緇樺埗鎸夐挳鐨勯鑹?
WM_CTLCOLORLISTBOX 0x0134 緇樺埗Listbox鐨勯鑹?
WM_CTLCOLOREDIT 0x0133 緇樺埗Edit鐨勯鑹?
WM_POWERBROADCAST 0x0218 broadcast to an application to notify it of power-management events
while(1)銆涓鐩村驚鐜互涓嬬殑涓や釜娑堟伅
WM_NCACTIVATE 0x0086
WM_WINDOWPOSCHANGING 0x0046
浠g爜濡備笅錛?
BOOL CALLBACK ListBoxTest(HWND hWnd,UINT message , WPARAM wParam, LPARAM lParam) 

{
int wmId = LOWORD(wParam );
int wmEvent = HIWORD(wParam) ;
int i ;
HDC hDc ;
PAINTSTRUCT ps ;
HWND hListBox ;
switch(message) 

{
case WM_INITDIALOG:
hListBox = GetDlgItem(hWnd,IDC_LIST_TEST) ;
for(i = 0; MyData[i].Name[0] != 0 ; i++)
{
SendMessage(hListBox,LB_ADDSTRING,0,(LPARAM)MyData[i].Name) ;
SendMessage(hListBox,LB_SETITEMDATA, i ,(LPARAM)i) ;
}
SetFocus(hListBox);
return (TRUE) ;
case WM_PAINT:
hDc = BeginPaint(hWnd,&ps) ;
//MSGPRINT(_T("Print")) ;
EndPaint(hWnd,&ps);
break ;
case LB_ADDFILE:
break ;
case WM_COMMAND:
switch(wmId)
{
case IDC_LIST_TEST:
switch(wmEvent)
{
case LBN_SELCHANGE:
//MSGPRINT(_T("LBN_SELCHANGE"));
break ;
case LBN_DBLCLK:
//MSGPRINT(_T("LBN_DBLCLK"));
break ;
case LBN_SETFOCUS:
//MSGPRINT(_T("LBN_SETFOCUS")) ;
break ;
case LBN_KILLFOCUS:
//MSGPRINT(_T("LBN_KILLFOCUS")) ;
break ;
}
return FALSE ;
break ;
case IDOK:
MSGPRINT(_T("IDOK"));
EndDialog(hWnd,0) ;
return TRUE;
break ;
case IDCANCEL:
MSGPRINT(_T("IDCANCEL"));
EndDialog(hWnd,0) ;
return TRUE ;
break ;
}
}
return FALSE;
}
濡傛灉鏈鍚庤繑鍥濼RUE閭d箞紿椾綋鐨勭潃鑹蹭細寰堟湁闂錛孌ialog鐨勯鑹插拰鑳屾櫙棰滆壊瀹屽叏涓鏍鳳紝瀵艱嚧涓嶈兘鐪嬪埌涓涓獥浣撶殑瀛樺湪錛屾墍浠ヨ繖閲屽繀欏昏繑鍥濬ALSE,
MSDN浣滃嚭鐨勮В閲婂涓嬶細Typically, the dialog box procedure should return TRUE if it processed the message, and FALSE if it did not. If the dialog box procedure returns FALSE, the dialog manager performs the default dialog operation in response to the message.
鎰忓嵆錛屽鏋滆繖涓獥浣撴兂澶勭悊鍝釜娑堟伅灝辮繑鍥濼RUE錛屽鏋滀笉鎯沖鐞嗚繖涓秷鎭氨榪斿洖FALSE錛屾墍浠ュ湪鏈鍚庡簲璇ヨ繑鍥濬alse錛屽嵆榛樿涓嶅鐞嗛偅浜涙秷鎭屽彧綆梂M_INITDIALOG 鍜屽叾瀹冧竴浜汭DOK IDCANCEL鐨勬秷鎭?
If the dialog box procedure processes a message that requires a specific return value, the dialog box procedure should set the desired return value by calling
榪欎釜鍢涖銆銆闈犮鑻辨枃銆鐑傦紒鍕夊媺寮哄己
濡傛灉紿椾綋鍦ㄥ鐞嗕竴涓秷鎭椂闇瑕佹樉紺哄湴榪斿洖涓涓鹼紝閭h繖涓獥浣撳簲璇ュ湪榪斿洖TRUE鍓嶈皟鐢⊿etWindoLong(hWndDlg,DWL_MSGRESULT,lpResult)鍑芥暟鏇存敼鎯寵榪斿洖鐨勫?鍒囪涓瀹氳椹笂璋冪敤璇ュ嚱鏁板湪榪斿洖TRUE涔嬪墠錛屽敖鍙兘鏃╁湴閫氳繃DWL_MSGRESULT鍘繪敼鍐欑湡姝g殑Result錛宐y a nested dialog box message. 銆浠栧鐨勮繖鍙ユ庝箞緲昏瘧錛?br>
鐜板湪閮藉紑濮嬫鐤戝紕榪欎簺娑堟伅鏈変粈涔堢敤錛岀敤MFC鑲畾鏄竴涓洿濂界殑閫夋嫨銆傚湪List Box閲屽鍔犲拰鍒犻櫎鍐呭閮芥槸澶儲浜嗭紝閮芥槸閫氳繃SendMessage鏉ュ畬鎴愮殑銆備笉鐭ラ亾鑳藉潥鎸佸鍒頒粈涔堟椂鍊欍?br>
#ifdef UNICODE
typedef WCHAR* TYPESTR ;
typedef WCHAR TYPECHAR ;
#else //UNICODE
typedef char* TYPESTR ;
typedef char TYPECHAR ;
#endif
#define ERRINFO _T("璋冭瘯閿欒淇℃伅") 
VOID PrintError(DWORD dwErrNo,TYPESTR szFileName,DWORD LineNo)
{
TCHAR* szErrBuff ; // TCHAR
TYPESTR szBuff =(TCHAR*) LocalAlloc(LPTR,sizeof(TYPECHAR)*512) ;
if(szBuff == NULL)
{
MessageBox(NULL,_T("鍐呭瓨鍒嗛厤澶辮觸"),ERRINFO,MB_OK) ;
return ;
}
// 榪欎釜鍦版柟鎶?nbsp;璇誨彇浣嶇疆 0x00000000 鏃跺彂鐢熻闂啿紿?nbsp;鎴栬?nbsp;The variable 'szErrBuff' is being used without being defined.
//鍘熷洜鏄?鍖呭惈| FORMAT_MESSAGE_FROM_STRING
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
// | FORMAT_MESSAGE_FROM_STRING,
NULL,
dwErrNo,
MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),
(LPTSTR) &szErrBuff,
sizeof(szErrBuff),
NULL) ; 
#ifdef UNICODE
wsprintf(szBuff,L"%s 絎?d琛岋紱閿欒淇℃伅錛?s",szFileName,LineNo,szErrBuff) ;
#else
sprintf(szBuff,"鏂囦歡鍚?s 絎?d琛岋紱閿欒淇℃伅錛?s",szFileName,LineNo,szErrBuff) ;
#endif
MessageBox(NULL,szBuff,ERRINFO,MB_OK) ;
LocalFree((HLOCAL)szErrBuff) ;
LocalFree( szBuff);
return ;
}

VOID TestForPrintError()
{
SECURITY_ATTRIBUTES sp;
sp.nLength = sizeof(sp) ;
sp.bInheritHandle = FALSE ;
sp.lpSecurityDescriptor = NULL ;
#ifdef UNICODE
TYPESTR szFileName = _T("d:\\he.txt") ;
#else
TYPESTR szFileName = "d:\\he.txt" ;
#endif
//濡備綍鍒ゆ柇鏂囦歡鏄惁宸茬粡瀛樺湪浜嗭紵
HANDLE hFile = CreateFile(szFileName,
GENERIC_READ |GENERIC_WRITE | GENERIC_EXECUTE ,
NULL, //FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
NULL, //&sp,
CREATE_ALWAYS, //| OPEN_EXISTING, //濡傛灉鏈夎繖涓細鎶ャ鍦ㄦ病鏈夊師鏂囦歡鐨勬椂鍊欎細鎶ョ郴緇熸壘涓嶅埌鎸囧畾鐨勬枃浠?/span>
FILE_ATTRIBUTE_NORMAL,
NULL) ;
if(hFile == INVALID_HANDLE_VALUE)
{
DWORD dwErrNo = GetLastError() ;
PRINTERROINFO(GetLastError() ,__FILE__,__LINE__) ;
}
DWORD lenth ;
//榪欎釜鍑芥暟濂藉儚姣旇緝灝戠敤浜嗐涓嶆敮鎸乁nicode
if(!WriteFile(hFile,"hello",4,&lenth,NULL))
PRINTERROINFO(GetLastError() ,__FILE__,__LINE__) ;
CloseHandle(hFile) ;
return ;
}