青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Sleeping

Note Book

2008年10月7日 #

DialogBox的若干問題

今天繼續折騰那個List Box控件,發現一個問題,當對話框出來之后,被主窗體給刷屏了,不能得到子窗體的句柄。后經仔細調試,發現一些端倪。首先在調用 DialogBox函數時 ,所生成的Dialog(我這里的Dialog面板里有一個Edit控件 兩個按鈕控件 和一個List Box控件)依次產生的消息隊列如下所示:
WM_SETFONT    0x0030                 設置字體
WM_INITDIALOG 0x0110                 初始化Dialog
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))->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次   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

代碼如下:
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;
}

如果最后返回TRUE那么窗體的著色會很有問題,Dialog的顏色和背景顏色完全一樣,導致不能看到一個窗體的存在,所以這里必須返回FALSE,
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.
意即,如果這個窗體想處理哪個消息就返回TRUE,如果不想處理這個消息就返回FALSE,所以在最后應該返回False,即默認不處理那些消息而只算WM_INITDIALOG 和其它一些IDOK 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 SetWindowLong(hwndDlg, DWL_MSGRESULT, lResult) immediately before returning TRUE. Note that you must call SetWindowLong immediately before returning TRUE; doing so earlier may result in the DWL_MSGRESULT value being overwritten by a nested dialog box message.

這個嘛   靠 英文 爛!勉勉強強
如果窗體在處理一個消息時需要顯示地返回一個值,那這個窗體應該在返回TRUE前調用SetWindoLong(hWndDlg,DWL_MSGRESULT,lpResult)函數更改想要返回的值.切記一定要馬上調用該函數在返回TRUE之前,盡可能早地通過DWL_MSGRESULT去改寫真正的Result,by a nested dialog box message.  他媽的這句怎么翻譯?


現在都開始懷疑弄這些消息有什么用,用MFC肯定是一個更好的選擇。在List Box里增加和刪除內容都是太煩了,都是通過SendMessage來完成的。不知道能堅持學到什么時候。

posted @ 2008-10-07 21:42 祥子_隨波逐流 閱讀(2084) | 評論 (0)編輯 收藏

2008年10月5日 #

關于FormatMessage的錯誤

#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 ; 
}
 
// 這個地方報 讀取位置 0x00000000 時發生訪問沖突 或者 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, //如果有這個會報 在沒有原文件的時候會報系統找不到指定的文件
        FILE_ATTRIBUTE_NORMAL,
        NULL) ;
    
if(hFile ==  INVALID_HANDLE_VALUE)
 
{
        DWORD dwErrNo 
= GetLastError() ;
        PRINTERROINFO(GetLastError() ,__FILE__,__LINE__) ;
    }

    DWORD lenth ;
        //這個函數好像比較少用了 不支持Unicode
    
if(!WriteFile(hFile,"hello",4,&lenth,NULL))
        PRINTERROINFO(GetLastError() ,__FILE__,__LINE__) ;
    CloseHandle(hFile) ;
    
return ;
}

posted @ 2008-10-05 18:30 祥子_隨波逐流 閱讀(655) | 評論 (0)編輯 收藏

僅列出標題  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            性伦欧美刺激片在线观看| 在线日韩中文| 在线亚洲欧美专区二区| 亚洲国产日韩欧美| 欧美va天堂在线| 亚洲精品久久久久中文字幕欢迎你| 欧美成人第一页| 欧美高清在线一区| av成人动漫| 亚洲一区制服诱惑| 国产亚洲欧美日韩在线一区 | 欧美黄色aa电影| 日韩午夜一区| 亚洲一区二区三区免费视频| 国产欧美精品一区aⅴ影院| 久久成人精品| 久久免费精品日本久久中文字幕| 在线观看亚洲精品| 亚洲国产成人av好男人在线观看| 欧美日韩一区在线播放| 亚洲综合精品自拍| 欧美在线|欧美| 亚洲欧洲另类国产综合| 亚洲伊人伊色伊影伊综合网| 国产欧美韩国高清| 亚洲国产精品一区二区第四页av| 欧美日韩国产黄| 久久精品国产精品亚洲| 蜜桃av噜噜一区| 亚洲女同性videos| 欧美大片91| 香蕉久久一区二区不卡无毒影院 | 亚洲午夜视频在线| 国产视频欧美视频| 亚洲精品一区二区在线观看| 国产欧美三级| 亚洲作爱视频| 在线精品国产欧美| 一本色道婷婷久久欧美| 亚洲国产第一| 欧美一级电影久久| 亚洲五月婷婷| 另类春色校园亚洲| 性做久久久久久久免费看| 欧美不卡高清| 欧美成人精品h版在线观看| 国产精品久久激情| 最新国产成人av网站网址麻豆 | 男女激情久久| 久久视频一区| 国产乱人伦精品一区二区| 亚洲成人在线视频播放| 国产精品丝袜久久久久久app| 亚洲观看高清完整版在线观看| 国产三区二区一区久久 | 久久久久久久久久码影片| 欧美日韩在线大尺度| 亚洲第一中文字幕在线观看| 国内精品久久久久久久97牛牛| 夜久久久久久| 一区二区三区国产盗摄| 欧美高清在线播放| 亚洲国产日韩欧美在线动漫| 亚洲国产成人午夜在线一区| 久久久久久一区二区三区| 久久中文字幕一区| 红桃视频国产精品| 久久国产视频网| 久久亚洲影院| 伊人久久亚洲热| 久久久美女艺术照精彩视频福利播放 | 久久久99爱| 噜噜噜在线观看免费视频日韩| 国产亚洲毛片在线| 久久国产精品亚洲77777| 久久噜噜亚洲综合| 黄色在线一区| 欧美不卡三区| 日韩一区二区免费高清| 亚洲一区二区欧美| 国产精品久久久久久久久搜平片 | 欧美日韩高清区| 99国产麻豆精品| 亚洲视频网站在线观看| 国产精品你懂得| 欧美影片第一页| 免费视频一区二区三区在线观看| 在线观看视频一区| 欧美日本精品在线| 中文网丁香综合网| 久久久精品一区二区三区| 一区精品在线| 欧美日韩mp4| 亚洲你懂的在线视频| 久久久精品2019中文字幕神马| 在线观看日韩av电影| 欧美精品成人一区二区在线观看| 日韩午夜电影av| 久久精品国产91精品亚洲| 亚洲国产导航| 国产精品永久免费在线| 久久精品天堂| 一区二区三区精品| 美国三级日本三级久久99| 99re66热这里只有精品4| 欧美视频日韩视频在线观看| 久久久久国产一区二区三区| 久久亚洲精品欧美| 国产精品日韩欧美| 久久久精品国产免费观看同学| 国产亚洲欧美日韩在线一区 | 久久久五月天| 99re6热只有精品免费观看| 国产精品午夜电影| 欧美另类亚洲| 久久久久久久波多野高潮日日| 亚洲久久视频| 欧美.www| 久久精品午夜| 亚洲一二三区视频在线观看| 黄色国产精品一区二区三区| 欧美丝袜第一区| 欧美劲爆第一页| 久久精品国产欧美亚洲人人爽| 亚洲美女精品成人在线视频| 久久亚洲综合色| 久久国产福利| 欧美中文字幕精品| 欧美午夜精彩| 欧美激情亚洲自拍| 久久综合九色综合欧美就去吻| 亚洲欧美电影在线观看| 亚洲精品免费网站| 亚洲高清色综合| 美女视频一区免费观看| 久久精品国产一区二区电影| 亚洲网站啪啪| 一区二区av在线| 99视频国产精品免费观看| 1000部国产精品成人观看| 国产一区视频在线看| 国产精品久久久久久久久久ktv| 欧美国产视频日韩| 欧美成人按摩| 欧美国产亚洲视频| 欧美高清视频在线| 欧美成人精品一区二区| 欧美成人国产一区二区| 欧美成人嫩草网站| 欧美高清在线观看| 欧美国内亚洲| 欧美日韩一区在线播放| 欧美图区在线视频| 国产精品日韩在线一区| 国产精品午夜av在线| 国产亚洲成精品久久| 国内成人精品一区| 影音欧美亚洲| 亚洲精品一区二区三区蜜桃久| 日韩天堂在线观看| 亚洲综合色噜噜狠狠| 午夜精品福利一区二区三区av| 午夜精品久久久久久久久久久| 亚洲欧美日本伦理| 久久婷婷国产综合精品青草| 免费一级欧美片在线观看| 亚洲大胆美女视频| 亚洲精品一区中文| 亚洲欧美日韩国产综合| 久久精品夜色噜噜亚洲a∨| 蜜桃久久精品一区二区| 欧美日韩在线精品| 国产亚洲一区精品| 日韩午夜三级在线| 性色av一区二区三区| 另类天堂av| 99亚洲伊人久久精品影院红桃| 香蕉成人啪国产精品视频综合网| 久久精品国产视频| 欧美日韩精品久久| 国外成人在线视频| 一本久道久久综合婷婷鲸鱼| 亚洲欧美日产图| 欧美高清视频在线| 亚洲在线1234| 欧美激情偷拍| 黄网站免费久久| 在线亚洲激情| 久久亚洲精品中文字幕冲田杏梨| 亚洲大胆在线| 亚洲永久精品国产| 久久精品日韩一区二区三区| 欧美日韩国产美| 欧美午夜视频在线| 激情久久中文字幕| 午夜精品久久久久| 男同欧美伦乱| 久久av资源网| 国产精品一区二区三区四区| 亚洲二区免费|