ShowScrollBar送出了哪些消息? 我的程序有点毛病,在datagrid中添加数据,可是添加了以后并不能马上看到,必须要等到出现滚动条时才能看到以前添加的数据,跟踪了一下程序,发现是在调用了ShowScrollBar函数后才可以看到,我想应该是ShowScrollBar发送了某些消息使窗口显示出来了,于是我想自己发送那个消息使数据在添加后立即显示出来而不要等到出现滚动条时才显示出来,可是我不知道ShowScrollBar发送了什么消息,请大哥帮忙啊!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 直接调用Invalidate不能刷新吗? 他的基类是WND应该会发个ON_PAINT吧 完整的工程可以从这里下载http://home.goofar.com/super007/cardop.rar请大家帮忙看一看,谢谢各位! LRESULT CALLBACK DataGridProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)中把以下代码去掉(switch (message) { case WM_CREATE: {之后)DG_LIST* dgList = GetDGGrid(hwnd);if ( dgList != NULL ) { HDC hDC = GetDC(dgList->dg_hWnd); RECT rectClient; GetClientRect( dgList->dg_hWnd, &rectClient ); dgList->dg_hMemBitmap = CreateCompatibleBitmap( hDC, (rectClient.right-rectClient.left), (rectClient.bottom-rectClient.top) ); dgList->dg_hMemDC = CreateCompatibleDC(hDC); dgList->dg_hOldMemBitmap = (HBITMAP)SelectObject( dgList->dg_hMemDC, dgList->dg_hMemBitmap ); SetFocus(dgList->dg_hWnd); ReleaseDC( dgList->dg_hWnd, hDC ); }因为此时这个刚创建的grid还没有加到链表里,所以GetDGGrid取出的肯定是NULL,所以这段代码始终不会执行。在BOOL AddDGGrid(HWND hWnd, HWND hParent)中的DG_LIST* curr = g_DGList; if ( curr == NULL ) g_DGList = newDGGrid; else { while ( curr->next != NULL ) curr = curr->next; curr->next = newDGGrid; }之后加上以下代码{ HDC hDC = GetDC(newDGGrid->dg_hWnd); RECT rectClient; GetClientRect( newDGGrid->dg_hWnd, &rectClient ); newDGGrid->dg_hMemBitmap = CreateCompatibleBitmap( hDC, (rectClient.right-rectClient.left), (rectClient.bottom-rectClient.top) ); newDGGrid->dg_hMemDC = CreateCompatibleDC(hDC); newDGGrid->dg_hOldMemBitmap = (HBITMAP)SelectObject( newDGGrid->dg_hMemDC, newDGGrid->dg_hMemBitmap ); SetFocus(newDGGrid->dg_hWnd); ReleaseDC( newDGGrid->dg_hWnd, hDC ); }这样就好了。同时奉劝你一句,以后在论坛里跟贴不要动不动就说别人不懂装懂,要尊重别人,懂吗!! 用SPY看看不就知道了,做UI开发不会SPY怎么行? 高手指点:ado如何存取sql表中指定文件路径的文本内容? 不爽 怎样使从CDialog派生的类做基类 怎样在注册表里读取一个REG_DWORD类型的数据呢? 控件在XP下显示的问题 [100分求讲解] 这个约150行的程序的讲解。。请各位给讲解下。。谁讲解了可再法帖给分。。 关于计时,怎样实现!我马上就要下岗了,很可怕! 怎么保存声音啊? LVITEM和CListView到底是什么? realplayer插件中如何获得正在播放的音乐的相关信息? 请教怎么在一个线程中获得一个对话框的句柄? ADO连接数据库问题
应该会发个ON_PAINT吧
http://home.goofar.com/super007/cardop.rar
请大家帮忙看一看,谢谢各位!
(switch (message)
{
case WM_CREATE:
{
之后)
DG_LIST* dgList = GetDGGrid(hwnd);
if ( dgList != NULL )
{
HDC hDC = GetDC(dgList->dg_hWnd);
RECT rectClient;
GetClientRect( dgList->dg_hWnd, &rectClient );
dgList->dg_hMemBitmap = CreateCompatibleBitmap( hDC, (rectClient.right-rectClient.left), (rectClient.bottom-rectClient.top) );
dgList->dg_hMemDC = CreateCompatibleDC(hDC);
dgList->dg_hOldMemBitmap = (HBITMAP)SelectObject( dgList->dg_hMemDC, dgList->dg_hMemBitmap );
SetFocus(dgList->dg_hWnd);
ReleaseDC( dgList->dg_hWnd, hDC );
}
因为此时这个刚创建的grid还没有加到链表里,所以GetDGGrid取出的肯定是NULL,所以这段代码始终不会执行。在BOOL AddDGGrid(HWND hWnd, HWND hParent)中的
DG_LIST* curr = g_DGList;
if ( curr == NULL )
g_DGList = newDGGrid;
else
{
while ( curr->next != NULL )
curr = curr->next;
curr->next = newDGGrid;
}
之后加上以下代码
{
HDC hDC = GetDC(newDGGrid->dg_hWnd);
RECT rectClient;
GetClientRect( newDGGrid->dg_hWnd, &rectClient );
newDGGrid->dg_hMemBitmap = CreateCompatibleBitmap( hDC, (rectClient.right-rectClient.left), (rectClient.bottom-rectClient.top) );
newDGGrid->dg_hMemDC = CreateCompatibleDC(hDC);
newDGGrid->dg_hOldMemBitmap = (HBITMAP)SelectObject( newDGGrid->dg_hMemDC, newDGGrid->dg_hMemBitmap );
SetFocus(newDGGrid->dg_hWnd);
ReleaseDC( newDGGrid->dg_hWnd, hDC );
}
这样就好了。同时奉劝你一句,以后在论坛里跟贴不要动不动就说别人不懂装懂,要尊重别人,懂吗!!