谁能给个参考 使用vc6.0 MFC文档形式模拟进程同步与互斥

谁能给个参考 使用vc6.0 MFC文档形式模拟进程同步与互斥,第1张

利用 api函数GlobalAlloc分配的内存实际上就是一个互斥资源。

HGLOBAL hgMem = GlobalAlloc(0,sizeof(xxxx))//分配全局内存资源

void *p = (void *)GlobalLock(hgMem)

// *** 作…迹腊…

//这时hgMem所表示的内存资源将不可被其他进程所访问

GlobalUnlock(hgMem)//解除锁定

//接下来其他进程可以访问该内存资源。胡陪

实现互斥资源访问,还可以利用CreateMutex,EnterCriticalSection,一般用于多线程中。

我所知道的就这么姿做滑多。同步的问题,我也不了解。

概述

Radio Button通常成组晌斗凯使用,组内是互斥的。

如何设置分组

(1)Ctrl+D

(2)依次点击Radio Button完成Tab键顺序设置

(3)将一组内首个Radio Button的Group属性设置成TRUE,其他为FALSE。 系统每检测到一个Group属性为TRUE的Radio Button,都会认为是一个新分组。

*** 作

在OnInitDialog()中设置RadioButton的初始选中状态,只需将每组选中的Radio Button进行设置,组销侍内其余的Radio Button是互斥不选中的。

                ((CButton *)GetDlgItem(IDC_RADIO1))->SetCheck(TRUE)//选上

通过Radio Button点击事宴唤件来设置新Radio Button状态,依然是只 *** 作组内被选中的Radio Button即可。

练习项目:在窗口的客户区用鼠标左键点两下,以这两点为源点画椭圆或矩形弯笑。鼠标右键即时d出菜单实现图形的选择(椭圆或矩形)工具条实现颜色的选择。

问题:考虑到按了某工具条按钮后再按此按钮就没有意义,所以要灰化所按埋衫含的按钮,同时又要启用以前灰化的按钮。如果不灰化当前所按的按钮,程序正常,但在实现互斥时出了问题。部分源代码如下:

void CDrawRectView::OnCommandRangeColor(UINT nID)

{

// TODO: Add your command handler code here

switch(nID)

{

case ID_BLACK:

m_rgb=RGB(0,0,0)

break

case ID_RED:

m_rgb=RGB(255,0,0)

break

case ID_GREEN:

m_rgb=RGB(0,255,0)

break

case ID_BLUE:

m_rgb=RGB(0,0,255)

break

}

SetToolBarCtrlState(nID)

}

void CDrawRectView::SetToolBarCtrlState(UINT nID)

{

int ControlBarNumber

//获得工具条指针

CToolBar* pToolBar=(CToolBar*)(GetParentFrame()->GetControlBar(IDR_MAINFRAME))

//获得工具条控制指针

CToolBarCtrl* pToolBarCtrl=&(pToolBar->GetToolBarCtrl())

//获得工具条控件数目

ControlBarNumber=pToolBarCtrl->GetButtonCount()

for(UINT ii=ID_BLACKii<ID_BLUEii++)

{

TBBUTTONINFO* ptbbi

pToolBarCtrl->GetButtonInfo(ii,ptbbi)

if(ptbbi->fsState!=TBSTATE_ENABLED)

{

pToolBarCtrl->EnableButton(nID,false)

pToolBarCtrl->EnableButton(ii,true)

return

}

}

return

}

问题说塌悔明:在自定义函数SetToolBarCtrlState中调用GetButtonCount是多余的,但问题正出在他身上。注释掉GetButtonCount后,GetButtonInfo又出了问题.问题的说明都是:

Unhandled exception in DrawRect.exe (MFC42D.DLL):0xC0000005:Access Violation

编译能通过,但运行时出错。

本程序是用VC++6.0在Win XP下编译.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12262659.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存